通过索引从数组中删除元素

3天

根据这个答案,通过索引从数组中删除一个元素意味着两个不同的更新:

db.lists.update({}, {$unset : {"interests.0" : 1 }})
db.lists.update({}, {$pull :  {"interests" : null}})

这行得通...但是它引入了一些复杂性,使操作原子化并防止了竞争情况。关于这个话题有什么更新吗?

尼尔·伦恩(Neil Lunn)

是的,不是,真的。考虑以下数组:

  { array: [ { a: "a", b: "b" }, { a:"a", b:"c" } ] }

因此,您可以使用以下语句从此处$ pull第二个元素:

  db.collection.update({}, {$pull: { array: { a: "a", b: "b"} } })

这将删除匹配的文档。但是,如果在此数组上做同样的事情:

  { array: [ { a: "a", b: "b" }, { a: "a", b:"c", c: "c" }, { a:"a", b:"c" } ] }

然后将是结果:

  { array: [ { a: "a", b: "b" }] }

因此,查询匹配数组中的两个文档,并将它们都拉出。

不幸的是,看似很明显:

  db.collection.update({}, {$pull: { array: { $elemMatch:{ a: "a", b: "b" } }} })

只是不会工作。真可惜。此时无法解析。

因此,故事的寓意是,如果您真的担心此类更新的并发和竞争条件.find() 首先要匹配元素,然后update()使用与整个文档匹配的语句,只要它不会部分匹配另一个文档中的其他文档即可。数组。

如果您不能这样做,那么您在问题中描述的方法是目前唯一的方法。

对此有JIRA问题,但并不十分受欢迎。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Spark中通过数据框中的索引删除数组中的元素

来自分类Dev

从索引AngularJS上方的数组中删除元素

来自分类Dev

如何从数组中删除未知的索引元素

来自分类Dev

如何通过指针从数组中删除元素

来自分类Dev

使用键删除索引数组中的数组元素

来自分类Dev

如何通过索引从J中的列表中删除元素?

来自分类Dev

如何通过单一方法从不同索引中删除数组中的元素?

来自分类Dev

通过从数组中删除除给定数组索引中的元素以外的所有元素来更新整个json

来自分类Dev

如何通过索引同步从列表中删除元素?

来自分类Dev

从数组中删除第n个元素并对其重新索引

来自分类Dev

从数组中删除一个知道其索引的元素

来自分类Dev

按索引删除数组中的掩码元素

来自分类Dev

如何通过 JavaScript/JQuery 在多维数组中查找元素的索引

来自分类Dev

如何通过rails中的索引搜索psql数组元素

来自分类Dev

通过索引从嵌套数组中删除项目(递归)

来自分类Dev

如何通过索引从数组中删除重复字符串?

来自分类Dev

如何从数组中删除指定索引处的元素,因为索引本身在数组中?

来自分类Dev

通过在React中单击从数组中删除元素

来自分类Dev

如何通过迭代删除数组中的所有元素

来自分类Dev

从数组中删除元素

来自分类Dev

删除数组中的每个奇数索引,直到数组中的元素数变为 1

来自分类Dev

从字符串数组中删除元素后,如何减少元素的索引?

来自分类Dev

通过负索引访问数组的元素

来自分类Dev

从数组中删除多个索引

来自分类Dev

从数组中删除索引键

来自分类Dev

从int数组中删除值为0的元素并保存已删除的索引

来自分类Dev

通过其索引删除数组对象

来自分类Dev

引用通过索引找到的元素中的元素

来自分类Dev

通过比较项目的0索引来删除数组中的一个数组

Related 相关文章

  1. 1

    如何在Spark中通过数据框中的索引删除数组中的元素

  2. 2

    从索引AngularJS上方的数组中删除元素

  3. 3

    如何从数组中删除未知的索引元素

  4. 4

    如何通过指针从数组中删除元素

  5. 5

    使用键删除索引数组中的数组元素

  6. 6

    如何通过索引从J中的列表中删除元素?

  7. 7

    如何通过单一方法从不同索引中删除数组中的元素?

  8. 8

    通过从数组中删除除给定数组索引中的元素以外的所有元素来更新整个json

  9. 9

    如何通过索引同步从列表中删除元素?

  10. 10

    从数组中删除第n个元素并对其重新索引

  11. 11

    从数组中删除一个知道其索引的元素

  12. 12

    按索引删除数组中的掩码元素

  13. 13

    如何通过 JavaScript/JQuery 在多维数组中查找元素的索引

  14. 14

    如何通过rails中的索引搜索psql数组元素

  15. 15

    通过索引从嵌套数组中删除项目(递归)

  16. 16

    如何通过索引从数组中删除重复字符串?

  17. 17

    如何从数组中删除指定索引处的元素,因为索引本身在数组中?

  18. 18

    通过在React中单击从数组中删除元素

  19. 19

    如何通过迭代删除数组中的所有元素

  20. 20

    从数组中删除元素

  21. 21

    删除数组中的每个奇数索引,直到数组中的元素数变为 1

  22. 22

    从字符串数组中删除元素后,如何减少元素的索引?

  23. 23

    通过负索引访问数组的元素

  24. 24

    从数组中删除多个索引

  25. 25

    从数组中删除索引键

  26. 26

    从int数组中删除值为0的元素并保存已删除的索引

  27. 27

    通过其索引删除数组对象

  28. 28

    引用通过索引找到的元素中的元素

  29. 29

    通过比较项目的0索引来删除数组中的一个数组

热门标签

归档