Обновить запрос в оболочке MongoDB - PullRequest
19 голосов
/ 13 октября 2011

В оболочке мой запрос:

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": ""
}

Ответы [ 3 ]

28 голосов
/ 13 октября 2011

Это связано с тем, что во втором параметре функции update необходимо использовать оператор $ set для обновления location_country, как в примере ниже:

db.checkin_4e95ae0926abe9ad28000001.update(
   {location_city:"New York"}, //find criteria
   // this row contains fix with $set oper
   { $set : { location_country: "FUDGE!"}}); 

Здесь вы можете найти список доступных операторов обновления.

7 голосов
/ 09 августа 2018

Изменено в версии 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});
4 голосов
/ 06 июля 2018
db.m_country.update(
    {"countryId": "962a0935-bf3d-4f63-a53c-254760273ede"}, 
    {$set: {'countryPopulation': '12540000'}})
...