2015-05-27 2 views
1

Я изучаю mongodb и пытаюсь выполнить простое обновление нескольких документов с помощью опции {$ multi: true}, но только обновляет один документ.Mongodb multi update, обновляет только один документ в mongo-shell

> db.users.update({'color': 'black'}, {$set: {'title': 'blackers'}}, {$multi: true}); 

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 

> db.users.find({'color': 'black'}); 

{ "_id" : ObjectId("5562312f061fa19e6cebc7e4"), "color" : "black", "hobby" : [ "dancing", "breaking", "drawing", "praying", "smiling" ], "name" : "john", "schools" : [ "mlimwa", "martin", "ignatus", "eget", "jubilee", "canon" ], "title" : "blackers" } 

{ "_id" : ObjectId("5564057bb0f557f0c0589e66"), "color" : [ "black" ], "name" : "demo" } 

{ "_id" : ObjectId("556424fc1dd78ab02dd2918f"), "color" : "black", "name" : "tola" } 

>db.version() 
3.0.3 

Пожалуйста, помогите я действительно застрял ..

+0

проблема заключается в том, что ваши документы содержат только один документ, который содержит поле 'title' и имеет значение' b недостатки, и ваш запрос обновления обновляет одно и то же значение поля, если вы изменили «blackers to blackers1», он обновляет только один документ, если вы хотите установить запись заголовка как 'update ({'color': 'black'}, {$ set: {'title': 'blackers122'}}, true, true) ' – Yogesh

ответ

3

Это не $multi, писать только {multi:true}

db.users.update({'color': 'black'}, {$set: {'title': 'blackers'}}, {multi: true}); 

см документацию здесь, для получения дополнительной помощи, в отношении upsert или writeconcern Params http://docs.mongodb.org/manual/reference/method/db.collection.update/

+0

hhaha .. Большое вам спасибо, у меня была эта ошибка в upsert и multi, и я не мог повернуть свое внимание в течение нескольких часов .. Cheers .. – ArchNoob

+0

принять ответ, если он помог: P: D – Nishant

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