2015-11-11 3 views
8

Я пытаюсь добавить новое поле во все документы в существующей коллекции.MongoDB Вставить поле во все документы в коллекции

Имя базы данных = тест имя Коллекция = команды

test.teams.update({ 
} 
, 
{ 
    $set: { 
     "isGolden": false 
    } 
} 
, 
false, 
true) 

Когда я пытаюсь его MongoChef, он дает мне следующую ошибку: enter image description here

Что плохого в этом? Благодаря

+0

Не должно быть «использования теста; db.teams.update ({}, {$ set: {isGolden: false}}, false, true); '? – chridam

+0

мое имя базы данных является тестом, но я тоже пробовал эту версию, но она не работает. –

+1

Вам нужно запустить эту полную команду в MongoChef IntelliShell, а не в любом запросе JSON editor, который вы там. Но он должен быть 'db.teams.update', как говорит chridam, а не' test.teams.update'. – JohnnyHK

ответ

21

Если вы хотите обновить все документы, использовать что-то вроде этого:

db.teams.update({}, {$set: {isGolden: false}}, {multi: true}); 

Ваших, выбирающего все, устанавливающий поданной isGolden к ложному и делает это обновление во всех документах с использованием несколько: правда

+0

говорится: «Ожидание открытия» {'в строке 1, col 2 " Это то, что я получаю все время с разными вариантами –

+0

Это единственный запрос, который вы не можете выполнить? Я тестировал его на mongo shell 3.0.7 на arch linux, и он отлично работает – rcmgleite

+0

Спасибо, ребята, я сделал это с помощью MongoChef Advanced-> Update Dialogue. Я выбрал все документы в коллекции и добавил поле. Теперь это сработало. –

4

С MongoDB 3.2 или более новой версии, вы можете сделать

db.teams.updateMany({}, {$set: {isGolden: false}}); 

Вот документ для функции updateMany db.collection.updateMany()

1

С Studio 3T вы писали запросы в режиме JSON, в которых он хочет получать данные JSON, но вы не пишете JSON Query. Вы должны перейти в режим InteliShell, в котором ваш запрос будет выполнен в формате, который вы пишете.

Studio 3T InteliShell

Смежные вопросы