Mongodb的左_子字段错误,即使元素是对象

Mongodb的左_子字段错误,即使元素是对象,mongodb,Mongodb,我有一个疑问: db.Sets.update({_id: "NxQRkA9hJ6rbjhoEN", "cards.set":"Theros"}, {"$set":{"cards.$.set_code": "THS"}}); 我的数据集如下所示: { "name" : "THS", "cards" : [ { "name" : "Omenspeaker", "set" : "Theros", "set_code" : "THS",

我有一个疑问:

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"
    },
    ]
}
LEFT_SUBFIELD only supports Object: cards.0. not: 2
以下是从mongo命令行复制和粘贴的一组稍微完整的数据:

我得到这样一个错误:

{
"name" : "THS",
"cards" : [
    {
        "name" : "Omenspeaker",
        "set" : "Theros",
        "set_code" : "THS",
        "id" : "370735"
    },
    {
        "name" : "Sedge Scorpion",
        "set" : "Theros",
        "set_code" : "THS",
        "id" : "370765"
    },
    ]
}
LEFT_SUBFIELD only supports Object: cards.0. not: 2

我读了很多这方面的文章,挣扎了40分钟才放弃,只是写了一个脚本来更新我的数据。我仍然想知道为什么它不起作用,我该怎么做。

从数据集中删除键为空的键值对

MongoDB在更新的子文档中遇到空键时抛出
LEFT_子字段,仅支持Object:
错误

示例数据很好,但pastebin数据不同。在每个子文档中都有一个空的键值对(
“”):“”

从您的pastebin数据:

{
    "name" : "THS",
    "cards" : [
            {
                    "name" : "Abhorrent Overlord",
                    ...
                    "legality_Peasant" : "",
                    "legality_Pauper" : "",
                    "" : "" <------ this line causes the issue
            },
            ...
{
“名称”:“THS”,
“卡片”:[
{
“名字”:“可恶的霸主”,
...
“合法性”:“,
“合法性”——“,

“”:““您可能正在使用一个阴暗的映射程序?我从未在mongodb中看到过
左\u子字段
。这可能会有所帮助:我正在使用mongodb 2.4.6。不过谢谢您的建议。”。