0

这是我的示例文档:

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

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

谢谢您的帮助。

4

1 回答 1

0

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

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

于 2018-09-07T22:13:04.423 回答