Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用$pull删除MongoDB中的(子)阵列_Mongodb - Fatal编程技术网

使用$pull删除MongoDB中的(子)阵列

使用$pull删除MongoDB中的(子)阵列,mongodb,Mongodb,因此,我正在评估Mongodb是否能够管理我的JSON后端。我对它完全陌生,我有一个问题,就是在代码中做起来很混乱,所以我想-见鬼-让我看看是否是时候开始使用Mongo了 我有一个大致如下的数据结构: [ { "_id" : ObjectId("526f59ee82f2e293f9833c54"), "humans" : [ { "serviceUsers" : [ {

因此,我正在评估Mongodb是否能够管理我的JSON后端。我对它完全陌生,我有一个问题,就是在代码中做起来很混乱,所以我想-见鬼-让我看看是否是时候开始使用Mongo了

我有一个大致如下的数据结构:

[
{
    "_id" : ObjectId("526f59ee82f2e293f9833c54"),
    "humans" : [
        {
            "serviceUsers" : [
                {
                    "foo1" : "bar2",
                    "foo2" : "bar3"
                },
                {
                    "foo1" : "baz2",
                    "foo2" : "baz3"
                }
            ]
        }
    ]
}
]
现在,我想删除任何“foo1”等于“baz2”的serviceUsers数组元素,这样理想情况下,我会得到以下结果:

[
{
    "_id" : ObjectId("526f59ee82f2e293f9833c54"),
    "humans" : [
        {
            "serviceUsers" : [
                {
                    "foo1" : "bar2",
                    "foo2" : "bar3"
                },
            ]
        }
    ]
}
]
我想,
$pull
是一个开始。我还试过一些扭曲动作。如果我在收集我的测试,我会尝试

db.mytests.update({“humans.serviceUsers.foo1”:“bazz2”},{$pull:{“humans.serviceUsers”:{“foo1”:“bazz2”}}},{multi:true})

在我公认的天真眼中,它似乎应该遵循
$pull
语法:

db.collection.update({field:},{$pull:{field:})

Mongo没有抱怨。但它也不会以任何方式改变收藏

我也试过了

db.mytests.update({},{$pull:{“humans.serviceUsers”:{“foo1”:“baz2”}},{multi:true})

这也失败了


非常感谢您的建议。

因此
人也属于数组,您应该使用positional$操作符访问匹配的
人的
数组
元素:

db.mytests.update({ "humans.serviceUsers.foo1" : "baz2" },
                  { $pull: { "humans.$.serviceUsers" : { "foo1": "baz2" }}});