Mongo如何根据同一对象中的另一个属性从数组内的对象中删除属性

时间:2017-06-07 23:20:42

标签: mongodb

拥有 db.users 集合,其文档类似于以下示例:

{
    "_id" : "4cff4345d95d8fc58cd34fe83325c8e",
    "name": "bob",
    "meals" : [
        {
            "fruits" : {
                "favourite" : "apple",
                "amount" : 5 
            },
            "name" : "breakfast",
        },
        {
            "fruits" : {
                "amount" : 3 
            },
            "name" : "lunch",
        }
    ],
       "age": 30
}

希望从 db.users 集合中的每个条目中删除收藏属性,其中 meals.name 等于早餐

因此,针对整个db.users集合运行上面所需的查询将导致修改,使得对于上面的条目,它变为:

{
    "_id" : "4cff4345d95d8fc58cd34fe83325c8e",
    "name": "bob",
    "meals" : [
        {
            "fruits" : {
                "amount" : 5 
            },
            "name" : "breakfast",
        },
        {
            "fruits" : {
                "amount" : 3 
            },
            "name" : "lunch",
        }
    ],
       "age": 30
}

请注意,“收藏夹”:“apple”,现在已从第一个子数组元素中删除,因为该查询将meal.name与早餐相匹配。

如果有人愿意提供帮助,当然很乐意提出任何问题/如果不清楚则进一步澄清。

提出此问题的理由 - 还有另一个SOF question here要求面值相似的内容。但是,它专注于select查询类型的操作,我无法根据那里提供的问题/答案确定我的问题的答案。在这里,我希望执行mutation(更新/删除属性)。

进一步更新 - 评论中给出的答案为我解决了这个问题 - 并且与上述SOF答案中的答案无关/充分不同。相信这个问题/答案是对SOF的合理/有用的补充,不应仅根据其他问题标记为重复。

0 个答案:

没有答案