Arrays 从mongo嵌套数组中提取

Arrays 从mongo嵌套数组中提取,arrays,database,mongodb,aggregate,Arrays,Database,Mongodb,Aggregate,我想从指定的合作伙伴那里获取某些主题ID。 例如,我想从partnerId=45中提取alpha主题(条目应保留为topicIds=[“beta”]) 我试过: { "partners" : [ { "partnerId" : 5, "topicIds" : [ "59de26f2e4b0f263704769e5" ] }, {

我想从指定的合作伙伴那里获取某些主题ID。 例如,我想从partnerId=45中提取alpha主题(条目应保留为topicIds=[“beta”])

我试过:

{
    "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"]}}}})