Mongodb findAndUpdate $unset 具有空数组的字段

Mongodb findAndUpdate $unset a field with an empty array

这是我的示例文档:

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

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

感谢您的帮助。

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

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