Обновить запрос в оболочке MongoDB
В оболочке мой запрос:
db.checkin_4e95ae0926abe9ad28000001.update({location_city:"New York"}, {location_country: "FUDGE!"});
Тем не менее, это на самом деле не обновляет мои записи. Это тоже не ошибка. Когда я делаю db.checkin_4e95ae0926abe9ad28000001.find({location_city:"New York"});
после этого я получаю все свои результаты, кроме location_country
не изменилось:
{
"_id": ObjectId("4e970209a0290b70660009e9"),
"addedOn": ISODate("2011-10-13T15:21:45.772Z"),
"location_address1": "",
"location_city": "New York",
"location_country": "United States",
"location_latLong": {
"xLon": -74.007124,
"yLat": 40.71455
},
"location_source": "socialprofile",
"location_state": "New York",
"location_zip": ""
}
4 ответа
Изменено в версии 3.6. Ниже приводится синтаксис для обновления:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>,
collation: <document>,
arrayFilters: [ <filterdocument1>, ... ]
}
)
Пример:
db.getCollection('products').update({},{$unset: {translate:1, qordoba_translation_version:1}}, {multi: true})
В вашем примере:
db.checkin_4e95ae0926abe9ad28000001.update(
{location_city:"New York"}, //query
// $update query
{ $set : { location_country: "FUDGE!"}});
По умолчанию метод update() обновляет один документ. Установите параметр Multi Parameter для обновления всех документов, которые соответствуют критериям запроса.
Пример 2:
db.checkin_4e95ae0926abe9ad28000001.update(
{location_city:"New York"}, //query
// $update query
{ $set : { location_country: "FUDGE!"}}, {multi: true});
Это потому, что во втором параметре функции обновления вам нужно использовать оператор $set для обновления location_country
как в примере ниже:
db.checkin_4e95ae0926abe9ad28000001.update(
{location_city:"New York"}, //find criteria
// this row contains fix with $set oper
{ $set : { location_country: "FUDGE!"}});
Здесь вы можете найти список доступных операторов обновления.
db.m_country.update(
{"countryId": "962a0935-bf3d-4f63-a53c-254760273ede"},
{$set: {'countryPopulation': '12540000'}})
Перед обновлением
> db.student.find({name:"Venky"}).pretty();
{
"_id" : ObjectId("6012e64dc2979ddffe1e5df9"),
"name" : "Venky",
"dept" : "MCA",
"age" : "26",
"phone" : "89786465"
}
Команда обновления
> db.student.update({name:"Venky"},{$set: {name:"DODDANNA CHAWAN",dept:"MCA(CS)", age:"25", phone:"1234567890"}});
Найти команду Посмотреть результат
> db.student.find({name:"DODDANNA CHAWAN"}).pretty();
После обновленного результата
{
"_id" : ObjectId("6012e64dc2979ddffe1e5df9"),
"name" : "DODDANNA CHAWAN",
"dept" : "MCA(CS)",
"age" : "25",
"phone" : "1234567890"
}
в реальной жизни используйте уникальный «_id», чтобы соответствовать документу, потому что имена будут найдены как дубликаты.