我需要帮助,我正在尝试更新content
数组内部的数组stage
中的数据:
{
"_id": ObjectId("5a95b1581ddd0d2c60b90612"),
"country": "Chile",
"name": "Xiaomi",
"start": new Date("2018-02-28T00:00:00-0300"),
"end": new Date("2018-03-03T00:00:00-0300"),
"budget": 5000000,
"instructions": "efaw",
"status": null,
"createdAt": new Date(1519568976029),
"budgetAccum": 2465914.3070999998599,
"brief": {
"stage": [
{
"cantPost": 1,
"cantStories": 1,
"desc": "Descripción",
"title": "Title of etapa",
"_id": ObjectId("5bad2e6814bc8ae0450d79a1"),
"content": [
{
"id": 1,
"desc": "Descripción contenido",
"hashtions": "#hashtag / @mentions",
"media": "photo or video",
"participants": [
],
"type": "post or history",
"title": "Title of contenido"
}
]
}
]
}
}
我的查询是这样:
const updateContent = await this.update({
"_id": ObjectId(campaignId),
"brief.stage._id": ObjectId(data.id),
"brief.stage.content.id": data.idContent
}, {
"$set": {
"brief.stage.content.$.desc": data.content.desc,
"brief.stage.content.$.hashtions": data.content.hashtions,
"brief.stage.content.$.media": data.content.media,
"brief.stage.content.$.participants": data.content.participants,
"brief.stage.content.$.type": data.content.type,
"brief.stage.content.$.title": data.content.title,
}
});
错误是这样的:
{ “数据”:{}, “ message”:“无法使用该部分(brief.stage.content.0.desc的阶段)遍历元素({stage:[{cantPost:1,cantStories:1,desc:\”Descripción\“,标题: \“ etapa的标题”,_id:ObjectId('5bad2e6814bc8ae0450d79a1'),内容:[{id:1,desc:\“Descripcióncontenido \”,注释:\“#hashtag / @mentions \”,媒体:\“照片或视频\“,参与者:[],键入:\”帖子或历史\“,标题:\” contenido的标题\“}]},{cantPost:1,cantStories:1,desc:\“Descripción\” ,标题:\“ etapa的标题”,_id:ObjectId('5bad3932206981e377a31971'),内容:[{hola:\“ true \”,adios:\“ false \”}]}]}))“, “ name”:“广告系列引擎”, “ type”:“ BAD_REQUEST”, “状态代码”:400
任何解释以及如何解决?
谢谢
答案 0 :(得分:1)
您可以在mongodb 3.6及更高版本中使用arrayFilters
db.getCollection('testcollections').update(
{ "_id" : ObjectId("5a95b1581ddd0d2c60b90612") },
{ "$set" : {
"brief.stage.$[e1].content.$[e2].desc" : 1,
"brief.stage.$[e1].content.$[e2].hashtions" : 2,
"brief.stage.$[e1].content.$[e2].media" : 3,
"brief.stage.$[e1].content.$[e2].participants" : 4,
"brief.stage.$[e1].content.$[e2].type" : 5,
"brief.stage.$[e1].content.$[e2].title" : 6
}},
{ "arrayFilters": [
{ "e1._id": ObjectId("5bad2e6814bc8ae0450d79a1") },
{ "e2.id": 1 }
]}
)