我是mongoDB的初學者,我想將它用於NodeJS的項目。 一切都很好,直到我不得不更新我的收藏中的一些文件。
所以基本上,我有一個文件是一個事物的列表,我想通過添加一些東西來更新它。所以我正在嘗試使用Update方法,但是我真的很困擾$ addToSet和$ push(我的意思是說它們不起作用)。 我想,我的語法是正確的,因爲如果我做了$集,它工作得很好,這樣的:
collection.update(
{ "keyboard.name":"k1" },
{
$set: {
keys: {
"myFirstKeyname": {"mySecondKeyname": "myValue"}
}
}
},
{
upsert: true
}
)
,但如果我只是替換$ $通過或addToSet $推送設置,它不會做任何數據庫,但我沒有一個錯誤...
我讀了很多東西在這裏和那裏,我看到很多人有這個問題,但我找不到解。
我的猜測是問題來自於我試圖更新嵌套字段的事實,但我不確定。
於是,我就做這樣的事情:
$addToSet: {
keys: {
[myFirstKeyname]: {"mySecondKeyname": "myValue"}
}
}
而且我也試圖建立我的查詢在JavaScript這樣的:
toInsert = JSON.parse(obj); // obj comes from the parameters of my function
let keyName = Object.keys(toInsert)[0];
let fieldValue = toInsert[keyName];
let update = { $addToSet: { "keys": {} } }
update['$addToSet']['keys'][keyName] = toInsert[keyName];
update = JSON.stringify(update)
返回此:
{ "$addToSet": { "keys": { "myKeyName": {"value": "myValue", "type": "key"} } } }
它可以用$ set替換$ addToSet。
我也嘗試了點符號,但它也不起作用,而且我也無法真正使用它,因爲我想爲插入的新值使用動態鍵名。 我也嘗試複製和粘貼mongoDB文檔中提供的示例,但它不起作用...
Sooo ...我做錯了什麼?有沒有人有一個有效的樣本? 這可能來自我的代碼的其他地方嗎?
編輯:實際上,我試圖更新一個子集合,它與數組不同。這就是爲什麼$ addToSet不起作用。
可能重複的[MongoDB - $ set更新或推數組元素](http://stackoverflow.com/questions/24115088/mongodb-set-to-update-or-push-array-element) – matt