【发布时间】:2018-04-18 18:53:37
【问题描述】:
{
"partners" : [
{
"partnerId" : 5,
"topicIds" : [
"59de26f2e4b0f263704769e5"
]
},
{
"partnerId" : 45,
"topicIds" : [
"alpha",
"beta"
]
},
{
"partnerId" : 12345,
"topicIds" : [
"alpha"
]
}
]
}
我想从指定的合作伙伴那里提取某些 topicId。 例如,我想从 partnerId = 45 中提取 alpha 主题(条目应保留为 topicIds = ["beta"])。
我试过了:
db.mypartnercoll.update({}, {$pull:{"partners":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}})
但是,这会删除整个 partnerId = 45 条目。我将有一个 partnerId 值和多个 topicId 来拉取。
【问题讨论】:
-
试试
{$pull:{"partners.topicIds":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}} -
WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0, "writeError" : { "code" : 16837, "errmsg" : "cannot use the part (partners of partners.topicIds) to traverse the element ({partners: [ { partnerId: 5.0, topicIds: [ \"59de26f2e4b0f263704769e5\" ] }, { partnerId: 45.0, topicIds: [ \"alpha\", \"beta\" ] }, { partnerId: 12345.0, topicIds: [ \"alpha\" ] } ]})" } }) -
查看这个:stackoverflow.com/questions/5228210/… 特别是最后一个答案
标签: arrays database mongodb aggregate