javascript - mongodb:原子地删除数组的前n个元素

标签 javascript arrays node.js mongodb mongoose

我想自动删除数组字段的前 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/

相关文章:

python - python 中的 C 代码和在 C 代码中复制数组

node.js - 如何为多个node.js应用程序设置AWS EC2?

php - JSON 数据解析器不允许单引号

javascript - JavaScript 中的嵌套数组属性分组

javascript - 淡入不同的文本行

java - 多态性和instanceof

arrays - 如何知道数组是否按 "almost"排序?

node.js - 如何处理在 Nodejs 中多次调用 server.handleUpgrade()?

javascript - 在javascript中获取对象项的值

javascript - 未捕获的语法错误 : Unexpected token ,