考虑以下文档,我想用_id:123,
更新整个数据集字段 "data": {
"_id": "1234546",
"dataset": [
{
"_id": "123",
"el2": "asd",
"el3": "sd",
"el4": "gfdd",
"el5": "asdfa",
},
{
"_id": "787",
"el2": "asd",
"el3": "sd",
"el4": "gfdd",
"el5": "asdfa",
},
{
"_id": "898",
"el2": "asd",
"el3": "sd",
"el4": "gfdd",
"el5": "asdfa",
},
{
"_id": "564",
"el2": "asd",
"el3": "sd",
"el4": "gfdd",
"el5": "asdfa",
},
]
}
我想使用_id of field更新数组元素的所有字段。
我正在使用
getDB.collection ('data').findOneAndUpdate(
{ _id: new ObjectId(data.userId),
"dataset._id":new ObjectId(data.dataset),
},
{ $set: { "userAddress.$":newdataset } },
{returnOriginal:false}});
请建议一些更新的选项。
提前致谢.. :))
答案 0 :(得分:1)
如果您只想在不提取数据库的情况下更新数据库服务器上的文档,则可以使用update而不是findOneAndUpdate。
这是一种方法。
collection('data').update({
_id:<_id>,
"dataset._id":<dataset._id>
},{
$set:{
"dataset.$.el2":<el2>,
"dataset.$.el3":<el3>,
"dataset.$.el4":<el4>,
"dataset.$.el5":<el5>
}
})