我现在使用mongooses将子文档拉到数组,现在我想用子文档的_id更改该子文档的详细信息字段的内容。
{
subDocument: [{
_id: ObjectId('123'),
detail: 'I want update this part'
}]
}
我尝试使用如下所示的$ set方法,但它没有按预期工作。
Model.findByIdAndUpdate(uid, { $Set: {subDocument: {_id: _id}}});
查看下面显示的for语句可能会对性能产生不良影响。所以我想避免这种方法。
const data = findById(uid);
for(...) {
if(data.subDocument[i]._id==_id) {
data.subDocument[i].detail = detail
}
}
你能告诉我一些我可以实现的mongodb查询吗?
而且,使用' for(;;)'是不是更好?上面显示的语句比使用mongodb的查询搜索?
答案 0 :(得分:1)
这应该有效:
Model.findOneAndUpdate({"subdocument._id": uid},
{
$set: {
"subdocument.$.detail ": "detail here"
}
},
).exec(function(err, doc) {
//code
});
答案 1 :(得分:1)
要按ID查找子文档,我使用的是这样的内容:
[env:lolin32]
;platform = espressif32
platform = https://github.com/platformio/platform-espressif32.git#feature/stage
board = lolin32
framework = arduino
lib_extra_dirs = ..\libraries
lib_deps =
https://urltotherepo.git
希望它有所帮助。