【问题标题】:Mongodb findAndUpdate $unset a field with an empty arrayMongodb findAndUpdate $unset 一个空数组的字段
【发布时间】:2019-02-13 05:38:47
【问题描述】:

这是我的示例文档:

{
  keys: {
    attr1: ['a', 'b', 'c'],
    attr2: ['d', 'e']
  }
}

我像这样删除数组中的项目...

{
  $pullAll: {
    'keys.attr2': ['d', 'e']
  }
}

这给 attr2 字段留下了一个空数组:

{
  keys: {
    attr1: ['a', 'b', 'c'],
    attr2: []
  }
}

但我想要做的是,如果该字段现在为空,那么我想要 $unset 该字段,以便最终结果如下所示:

{
  keys: {
    attr1: ['a', 'b', 'c']
  }
}

我想在单个查找和更新操作中执行此操作。

感谢您的帮助。

【问题讨论】:

    标签: mongodb unset findandmodify


    【解决方案1】:

    很遗憾,这是不可能的。您不能在执行更新操作的同时执行其他匹配。但是,您可以执行与空数组匹配的第二次更新,然后取消设置该字段。

    这只是您必须解决的限制。

    【讨论】:

    • 有没有办法进行第二次操作然后到$unset 任何具有空数组的字段?如果您知道该解决方案,我会说将其添加到此答案中。谢谢。
    • 不幸的是,您需要一次处理这些,例如db.your_collection.update({'keys.attr1': []}, {$unset: {'keys.attr1': null}}, {multi: true})。没有真正优雅的“取消设置所有空字段”操作。
    猜你喜欢
    • 2020-09-23
    • 2021-12-02
    • 1970-01-01
    • 2014-06-20
    • 2015-08-16
    • 2020-11-21
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多