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
Mongodb 为什么$pushAll不推荐,而$pullAll不推荐?_Mongodb - Fatal编程技术网

Mongodb 为什么$pushAll不推荐,而$pullAll不推荐?

Mongodb 为什么$pushAll不推荐,而$pullAll不推荐?,mongodb,Mongodb,mongodb文档说$pushAll从2.4版开始就被弃用了:将$push操作符与$each一起使用。 因此,我将{$pushAll:data}的所有属性都更改为{$push:{$each:$data} 这是一项无聊的工作 我是否需要将{$pullAll:data}替换为{$pull:{$each:$data},以后就不需要这样做了 或者$pullAll在不久的将来不会被弃用?使用方法实际上有点不同,所以“近期”弃用似乎没有多大意义。修饰符排序统一了API,不仅适用于,而且也适用于,这就是原因

mongodb文档说$pushAll从2.4版开始就被弃用了:将$push操作符与$each一起使用。

因此,我将{$pushAll:data}的所有属性都更改为{$push:{$each:$data}

这是一项无聊的工作

我是否需要将{$pullAll:data}替换为{$pull:{$each:$data},以后就不需要这样做了


或者$pullAll在不久的将来不会被弃用?

使用方法实际上有点不同,所以“近期”弃用似乎没有多大意义。修饰符排序统一了API,不仅适用于,而且也适用于,这就是原因

在这两种操作中,与其说是“查询”数据,不如说是指定要插入的对象。这些可以只是标量值,也可以是要添加到数组中的完整子文档

让我们考虑文档中的一个数组:

{“列表”:[0,1,1,3,2,4,5,5]})
因此,除了运算符之外,还有一个运算符实际上将查询作为参数。这意味着操作实际上只是这方面的简写:

db.test.update({},{“$pull”:{“list”:{“$in”:[1,2,5]})
这里值得注意的是,here的“速记”表示法仅适用于标量值,其中使用的查询文档表单实际上可以删除无法删除的子文档表单。考虑到这一点:

{“list”:[{“name”:“fred”,“age:20},{“name”:“barney”,“age:20}]}
您无法通过使用删除所有
“age”:20
元素,而是需要的查询形式,更不用说将整个文档指定为带有的参数可能不是您想要的:

db.test.update({},{“$pull”:{“list”:{“age”:20}})
还值得注意的是,有些人可能已经预料到了这一点,但由于我们正在查询数组的元素,因此应用于数组元素的“查询文档”的用法几乎是隐含的

因此,关于弃用的一般反应,我不认为是这样,因为使用情况不同,并且没有必要像其他运营商那样“统一”其他运营商的操作


不过,如果你真的那么担心,我想说,上面显示的表单仍将存在一段时间。

如果有人有时间机器来告诉你这一点,他们可能会用它来做更好的事情,而不是找到不推荐使用的内容。