2016-10-04 2 views
1

Я пытаюсь обновить запись в mongoDB, используя updateOne, запись un update находится в массиве, и все поля обновляются, кроме одного поля, которое является страной. Я попытался обновить его, используя MongoChef (графический интерфейс MongoDB для Linux), но он не работает, также Если я обновляю один документ с помощью Edit в GUI, тогда эта запись готова к обновлению после этого.mongoDB updateOne не обновляет запись

Я попытался с помощью следующего запроса в MongoChef

db.institutions.updateOne({ 
    "campus": { "$elemMatch": { "_id": ObjectId("578500ef87e4c326183e520e")} }, 
    "_id": ObjectId("57f25706762c06cb7d9422fc") 
    }, 
    { 
    "$set" : { "campus.$.country" : "SS1" 
    } 
}); 

Только поле страны не обновляется Если я обновлю любое другое поле он работает отлично.

Структура документа перечислены в

{ 
    "_id" : ObjectId("57f26824762c06cb7d982e37"), 
    "campus" : [ 
     { 
      "_id" : ObjectId("578500ee87e4c326183e5201"), 
      "country" : "GB", 
      "coreId" : NumberInt(1), 
      "city" : "Norwich", 
     } 
    ] 
} 

Заранее спасибо любая помощь appreciatiable

+0

Можете ли вы показать нам документ, который вы получаете при запросе 'db.institutions.findOne ({" _id ": ObjectId (" 57f25706762c06cb7d9422fc ")})'? – chridam

+0

@chridam Моя находка запрос db.institutions.find ({ "campus.country": "SS1", "_id": ObjectId ("57f26824762c06cb7d982e37") }, { "Кампус": правда }); { "_id": ObjectId ("57f26824762c06cb7d982e37"), "Кампус": [ { "_id": ObjectId ("578500ee87e4c326183e5201"), "страна": "GB", "COREid": NumberInt (14677), «город»: «Норвич» } ] } – Shahbaz

+0

Но это совершенно отличается от запроса в вашем обновлении, где вы запрашиваете для документа с '{«_id»: ObjectId («57f25706762c06cb7d9422fc») } ' – chridam

ответ

0

попробовать этот запрос

db.institutions.updateOne(
    { 
     "campus._id": ObjectId("578500ef87e4c326183e520e"), 
     "_id": ObjectId("57f25706762c06cb7d9422fc") 
    }, 
    { 
     "$set" : { "campus.$.country" : "SS1"} 
    } 
); 

NB: если водитель использовать MongoDB или мангуст, то нет необходимо использовать ObjectId("") только использовать "578500ef87e4c326183e520e"

+1

Это тоже не работает Я пробовал это – Shahbaz

+0

где лет u запустить этот запрос означает оболочку mongo или что-нибудь еще? –

+0

Я бег этого запроса от проекта, а также в MongoChef (графический интерфейс для MongoDB) – Shahbaz