我有一个包含对象数组的文档,一个对象包含多个对象,我想用$set
更新内部对象但是没有运气。
谁能给我任何暗示以便我能解决它?。
这是我的目标:
{
"_id": ObjectId("56fbfafdf86fa6161911d104"),
"site": "xyz",
"adsPerCategory": NumberInt(2),
"sampledAt": ISODate("2016-03-30T16:12:45.138+0000"),
"items": [
{
"id": "4563873",
"content": {
"title": "WATER DISTILLERS",
"body": "Perfect to save money.",
}
},
{
"id": "4563s23232873",
"content": {
"title": "Cola water",
"body": "Perfect for body.",
}
}
]
}
我想更新body
。
现在,我已经给了single object
但它可以是多个。
这是我试过的
models.Sample.update(
{
_id: samples._id
},
'$set': {
'items.0.content.body': body.description
},
function(err, numAffected) {
console.log(err);
console.log('Affected....', numAffected);
}
);
如果我放0
,但我想让它变得动态,它的工作正常。
赞'items.index.content.body': body.description
谢谢。
答案 0 :(得分:0)
我认为你可以做这样的事情。
models.Sample.find({ _id: ObjectId(samples._id) })
.forEach(function (doc) {
doc.items.forEach(function (element, index, array) {
items[index].content.body = body.description;
});
models.Sample.save(doc);
});