我正在使用mongodb update方法和upsert = true。
我的数据如下:
{"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.
我不能在我的操作中使用“插入”,因为我不知道数据是否是他们的并且字段需要更新,或者不是他们的并且需要插入(第一次)
答案 0 :(得分:0)
Upserts适用于您希望更新生效的整个文档是否存在,而不仅仅是数组元素。对于数组元素,您可以使用$addToSet
:
db.testcol.update(
{"my_id": "1"},
{"$addToSet": {"test_list": {"test_id": 2, "test_name": "mmmm"}}})
如果匹配元素尚未存在,它只会将新元素添加到doc的test_list
数组字段中。