[英]How do I update nested MongoDB object
我現在已經堅持了 6 個小時......我如何更新內部對象內部的字段和 MongoDB 中另一個對象內部的元素。
所以我有一個用戶集合,每個用戶都是一個包含對象數組的文檔。 這些對象具有我希望能夠更改的字段。 就像我只想更改“頻率”和“狀態”字段,但我只想更改“_id”等於查詢的字段。
我試過了
db.collections.users.updateOne(
{},
{$set: {"nouns.$[element].status": 3}},
{multi: true,
arrayFilters: [{"element._id": req.body.inputId}]}
);
加上很多其他的東西。
{
"_id" : ObjectId("5f7d8490c1842471c6bcea42"),
"username" : "eric@mail.com",
"nouns" : [
{
"_id" : ObjectId("5f7d849cc1842471c6bcea43"),
"word" : "die Sonne",
"timeStamp" : ISODate("2020-10-07T09:04:28.436Z"),
"frequency" : 0,
"status" : 0
},
{
"_id" : ObjectId("5f7d84a8c1842471c6bcea45"),
"word" : "das Wetter",
"timeStamp" : ISODate("2020-10-07T09:04:40.940Z"),
"frequency" : 0,
"status" : 0
},
{
"_id" : ObjectId("5f7d84afc1842471c6bcea47"),
"word" : "der Apfel",
"timeStamp" : ISODate("2020-10-07T09:04:47.403Z"),
"frequency" : 0,
"status" : 0
},
{
"_id" : ObjectId("5f7d84b9c1842471c6bcea49"),
"word" : "das Maedchen",
"timeStamp" : ISODate("2020-10-07T09:04:57.388Z"),
"frequency" : 0,
"status" : 0
},
{
"_id" : ObjectId("5f7d84c8c1842471c6bcea4b"),
"word" : "das Auto",
"timeStamp" : ISODate("2020-10-07T09:05:12.036Z"),
"frequency" : 0,
"status" : 0
}
],
"verbs" : [],
"adjectives" : [],
"others" : [],
"salt" : "*****",
"hash" : "*****",
"__v" : 5
}
您的查詢運行良好,請在此MongoPlayground上嘗試
req.body.inputId
必須是一個 ObjectId 以匹配nouns
中的_id
我想通了...感謝 AlexisG 給我的線索,我需要一個 ObjectId 而不僅僅是來自 ObjectId 括號內的字符串 ID。
解決辦法是在js文件的開頭聲明:const ObjectId = require('mongodb').objectID
然后在 arrayFilters:[{"element._id": ObjectId(req.body.inputId)}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.