1

我有这些文件在一个集合中

{
   _id: 1,
   name: 'xpto',
   arr: [1, 2, 3]
},
{
  _id: 2,
  name: 'xyz'
}

我希望 addToSet 编号 4 使用 update {multi: 1} 进行 arr,但出现错误“无法将 $addToSet 修饰符应用于非数组。”。我知道它发生是因为我的第二个文档没有 arr 字段。

当数组不在所有文档中时,是否可以使用 $push 和/或使用更新命令的 $addtoset 更新数组?

我用 find 做到了这一点,寻找 cursor.arr 并在不存在时创建数组。

你知道另一种方法吗?

4

1 回答 1

1

如果您只需要更新第一个文档中的数组,您可以使用 $push 运算符,如下所示:

db.docs.update({_id:1},{$push:{arr:4}});

如果您需要更新两个文档,您也可以使用 $push,但在第一个参数中使用空值:

db.docs.update({}, {$push:{arr:4}});

结果将是:*{"_id":1, "arr":[1,2,3,4], "name":"xpto"} {"_id":2, "arr":[4], “名称”:“xyz”}*

于 2013-02-15T19:03:35.697 回答