我阅读了MongoDb中的文档,我使用了一个简单的证明,我只看到:Push正在对数组进行排序,但addtoSet不是.
对我来说视觉上是一样的,我不知道其中的区别.
有人可以解释我的区别吗?
另一个人认为,如果它可能是西班牙语或简单的英语,我会贬低它.
cub*_*buk 113
$addToSet如果项已经包含它,则不将该项添加到给定字段,另一方面,$push将该给定对象添加到字段中是否存在.
{_id: "docId", items: [1, 2]}
db.items.update({_id:"docId"}, {$addToSet:{items: 2}}); // This won't update the document as it already contains 2
db.items.update({_id:"docId"}, {$push: {item:2}}); // this will update the document. new document {_id: "docId", items:[1,2,2]}
Run Code Online (Sandbox Code Playgroud)
小智 19
$ push - 按照收到的顺序添加项目.您也可以多次添加相同的项目
$ addToSet - 只添加唯一的项目,但项目的顺序不受保证
如果您需要添加订购的唯一商品,您可以通过$ addToSet分组和添加元素,然后使用元素$ unwind数组,按项目排序$ sort,然后使用$ push项目再次$ group.