我有查询:
db.Sets.update({_id: "NxQRkA9hJ6rbjhoEN", "cards.set":"Theros"}, {"$set":{"cards.$.set_code": "THS"}});
我的数据集是这样的:
{
"name" : "THS",
"cards" : [
{
"name" : "Omenspeaker",
"set" : "Theros",
"set_code" : "THS",
"id" : "370735"
},
{
"name" : "Sedge Scorpion",
"set" : "Theros",
"set_code" : "THS",
"id" : "370765"
},
]
}
这是一组稍微完整的数据,从mongo命令行复制并粘贴: http://pastebin.com/ix5QaQP3
我收到这样的错误:
LEFT_SUBFIELD only supports Object: cards.0. not: 2
我在这上面阅读了很多内容,并在放弃之前挣扎了40分钟而只是写了一个脚本来更新我的数据。我仍然想知道为什么它不起作用,以及我应该怎么做。
答案 0 :(得分:0)
使用数据集中的空键删除键值对。
当MongoDB遇到正在更新的子文档中的空键时,会抛出LEFT_SUBFIELD only supports Object:
错误。
您的示例数据很好,但您的pastebin数据不同。每个子文档中都有一个空键值对("":""
)。
从您的pastebin数据:
{
"name" : "THS",
"cards" : [
{
"name" : "Abhorrent Overlord",
...
"legality_Peasant" : "",
"legality_Pauper" : "",
"" : "" <------ this line causes the issue
},
...