Mongodb findAndUpdate $取消设置一个空数组的字段

时间:2018-09-07 21:24:39

标签: mongodb unset findandmodify

这是我的示例文档:

{
  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']
  }
}

我想在一次查找和更新操作中完成此操作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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