在Mongo中$ pull多个对象不起作用

编程入门 行业动态 更新时间:2024-10-21 23:27:57
本文介绍了在Mongo中$ pull多个对象不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个节点"数组的子对象

I have a sub-object of an array of "nodes"

这是我的Mongo文档结构

Here's my Mongo doc structure

db.nodes.find() { _id : ObjectId("skipped"), nodeid : "node1" nodes : [ { nodeid : "node11" sku : [ "aaa", "bbb", "ccc"] }, { nodeid : "node12" sku : [ "bbb", "ddd"] }] } { _id : ObjectId("skipped"), nodeid : "node2" nodes : [ { nodeid : "node21" sku : [ "aaa", "bbb", "ddd"] }] }

我使用:

db.nodes.update({'nodes.sku': 'bbb'},{$pull: {'nodes.$.sku':'bbb'}}, {multi: 1})

有结果:

db.nodes.find() { _id : ObjectId("skipped"), nodeid : "node1" nodes : [ { nodeid : "node11" sku : [ "aaa", "ccc" ] }, { nodeid : "node12" sku : [ "bbb", "ddd", ] } ] } { _id : ObjectId("skipped"), nodeid : "node2" nodes : [ { nodeid : "node21" sku : [ "aaa", "ddd" ] } ] }

"node1.node12"仍然具有对象"bbb"

"node1.node12" still have object "bbb"

我尝试使用:

db.nodes.update({'nodes': {$elemMatch: {'sku':'bbb'}}},{$pull: { nodes: {'sku':'bbb'}}}, {multi: 1})

并得到结果:

db.nodes.find() { _id : ObjectId("skipped"), nodeid : "node1" nodes : [ ] } { _id : ObjectId("skipped"), nodeid : "node2" nodes : [ { nodeid : "node21" sku : [ "aaa", "ddd" ] } ] }

我丢失了"node1"中的所有数据

I lost all data in "node1"

并从"node2.node12"更正提取对象

and correct pull object from "node2.node12"

一些建议

谢谢, 瓦西里

推荐答案

不幸的是,您想要执行的操作尚不支持.如果要投票,功能请求票证在这里:

Unfortunately, what you want to do isn't supported yet. The feature request ticket is here if you want to vote it up:

jira.mongodb/browse/SERVER-1243

与此同时,有两种选择:

In the meantime, there are a couple options:

  • 重新设计您的文档.这是用于建模树结构的常见模式的链接: docs. mongodb/manual/tutorial/model-tree-structures/

    继续当前的设计并执行多次更新,或者进行查找,修改应用程序中的nodes数组并进行多次更新.请注意,在这种情况下,您将无法在单个文档内进行所有修改.

    continue with your current design and perform multiple updates or do a find, modify the nodes array in your application and do a multi update. Be aware that you won't be able to make all modifications within a single document atomically in these scenarios.

  • 更多推荐

    在Mongo中$ pull多个对象不起作用

    本文发布于:2023-11-27 04:17:02,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1636558.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:多个   不起作用   对象   Mongo   pull

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!