Arrays 从mongo嵌套数组中提取
我想从指定的合作伙伴那里获取某些主题ID。 例如,我想从partnerId=45中提取alpha主题(条目应保留为topicIds=[“beta”]) 我试过:Arrays 从mongo嵌套数组中提取,arrays,database,mongodb,aggregate,Arrays,Database,Mongodb,Aggregate,我想从指定的合作伙伴那里获取某些主题ID。 例如,我想从partnerId=45中提取alpha主题(条目应保留为topicIds=[“beta”]) 我试过: { "partners" : [ { "partnerId" : 5, "topicIds" : [ "59de26f2e4b0f263704769e5" ] }, {
{
"partners" : [
{
"partnerId" : 5,
"topicIds" : [
"59de26f2e4b0f263704769e5"
]
},
{
"partnerId" : 45,
"topicIds" : [
"alpha",
"beta"
]
},
{
"partnerId" : 12345,
"topicIds" : [
"alpha"
]
}
]
}
但是,这将删除整个partnerId=45条目。我将有一个partnerId值和多个topicid可供提取。而不是
db.mypartnercoll.update({}, {$pull:{"partners":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}})
使用
这是一个更新查询,因此您可以在第一个{}中指定要对其进行操作的特定文档或数组元素Try{$pull:{“partners.topicIds”:{“partnerId”:45,“topicIds”:{“$in”:[“alpha”]}}}}
WriteResult({“nmatch”:0,“nUpserted”:0,“nModified”:0,“writeError”:{“code”:16837,“errmsg”:“无法使用部分(partners of partners.topicIds)遍历元素({partners:[{partnerId:5.0,topicIds:[\'59de26f2e4b0f263704769e5\']},{partnerId:45.0,topicIds:[\'alpha\',\'beta\']},{partnerId:12345.0,topicIds:[\'alpha\']}}})}
检查此项:特别是最后一个答案。”
db.mypartnercoll.update({}, {$pull:{"partners":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}})
db.mypartnercoll.update({"partners.$.partnerId":"yourdesired_partnerId"},
{$pull:{"partners":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}})