0

我正在使用 upsert=true 的 mongodb 更新方法。

我的数据如下所示:

{"my_id":"1",
"test_list":[{"test_id":1,"test_name":"pppp"}]}

现在我正在使用以下命令:

db.testcol.update({"my_id":1,"test_list.test_id":2},{"$set":{"test_list.$.test_name":"mmmm"}},true,true)

现在我想要一个新对象插入到“test_list”中,因为它不存在

但我收到错误:

Cannot apply the positional operator without a corresponding query field containing an array.

我的操作不能使用“插入”,因为我不知道数据是他们的并且该字段需要更新,还是不是他们的并且需要插入(第一次)

4

1 回答 1

0

Upserts 用于当您希望更新工作时,无论整个文档是否存在,而不仅仅是一个数组元素。对于数组元素情况,您可以使用$addToSet

db.testcol.update(
    {"my_id": "1"},
    {"$addToSet": {"test_list": {"test_id": 2, "test_name": "mmmm"}}})

test_list如果匹配的元素尚不存在,它只会将新元素添加到文档的数组字段中。

于 2013-10-22T18:08:07.097 回答