我想自动删除数组字段的前 n 个元素。
现在,我使用 model.find()
,然后使用 doc.arrayField.slice(n)
,然后使用 doc.save()
。但这会将整个文档加载到内存中(如果文档非常大,则不好),并且会破坏原子性。
有没有办法在 MongoDB/Mongoose 中以原子方式实现这一点?
谢谢!
最佳答案
您可以使用$pop
自动删除第一个元素。或者,如果您可以指定要删除的字段,则可以使用 $pull
从数组中删除多个项目。否则,您无法使用 mongodb 在原子操作中从数组中删除前 n 个元素。
db.yourCollection.update({}, {$pop: {arrayField: 1}}}) // will remove the first element from arrayField
db.yourCollection.update({}, {$pull: {arrayField: {foo: "bar"}}}}) // will remove all elements whose foo field equal to bar from arrayField.
关于javascript - mongodb:原子地删除数组的前n个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34423093/