{
    "partners" : [
        {
            "partnerId" : 5,
            "topicIds" : [
                "59de26f2e4b0f263704769e5"
            ]
        },
        {
            "partnerId" : 45,
            "topicIds" : [
                "alpha",
                "beta"
            ]
        },
        {
            "partnerId" : 12345,
            "topicIds" : [
                "alpha"
            ]
        }
    ]
}

我想从指定的合作伙伴那里提取一些主题。
例如,我想从partnerID=45中提取alpha主题(该条目应该保留为topicids=[“beta”])。
我试过:
db.mypartnercoll.update({}, {$pull:{"partners":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}})

但是,这将删除整个partnerID=45条目。我将拥有一个partnerID值和多个主题。

最佳答案

而不是

db.mypartnercoll.update({}, {$pull:{"partners":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}})

使用
db.mypartnercoll.update({"partners.$.partnerId":"yourdesired_partnerId"},
{$pull:{"partners":{"partnerId":45, "topicIds":{"$in":["alpha"]}}}})

这是一个更新查询,因此您可以在第一个{}中指定要操作的某个文档或数组元素

09-07 19:52