我想更新文檔中的數組,並且它能夠正常工作,但是當我想用upsert添加新元素時,將無法運行錯誤。我一直在谷歌上搜索幾個小時,並且我試過的mongodb文檔和我無法操作的文檔。mongo和upsert更新數組
集合的結構是:
{
"name" : String,
"providerId": Number,
"description": String,
"providers": [
{
"merchantId": String,
"name": String,
"valid": Boolean,
"data": String
},
{
"merchantId": String,
"name": String,
"valid": Boolean,
"data": String
},
{
"merchantId": String,
"name": String,
"valid": Boolean,
"data": String
}
]
}
使用該查詢以更新現有數據:
db.collection.update({ "providerId": ID, "providers": { $elemMatch: { "merchantId": MERCHANTID }}}, { $set: {
"providers.$.merchantId": MERCHANTID,
"providers.$.name": NAME,
"providers.$.valid": true,
"providers.$.data": DATA
}});
這工作正常和正確更新我的陣列的元素。我想當一個元素不存在添加它,不知道是否有項目,但不是如果可能,探測添加upsert({upsert:true})參數,但給我以下錯誤。我認爲這是因爲它不返回任何對象搜索。
這是錯誤:
MongoError:的位置經營者沒有找到查詢所需的匹配。 Unexpanded update:providers。$。name
是否有任何方法更新數組中的子文檔中的數據,並且與添加新數據(如果它們不存在)相兼容?我試圖用運營商$進行搜索,它給了我錯誤;還探索以不同方式搜索({「providers.merchantId」:MERCHANTID})和其他人。
謝謝
您能否讓我知道'providers。$。merchantId'中的$是被調用還是記錄在案?我遇到一些奇怪的問題,並試圖弄清楚究竟是什麼。 – Chris 2016-08-26 14:01:29