MongoDB:替换数组中的完整对象

时间:2017-08-16 11:41:30

标签: mongodb mongodb-query

我正在浏览StackOverflow,但大多数问题都与从数组中更新对象的单个元素有关。

就我而言,我的情况有点不同。 我想用一个新的替换数组中的完整对象。

原始集合如下:

db.countries.find().pretty()
{
    "_id": "some ID goes here",
    "longitude": "some longitude",
    "latitude": "some latitude",
    "name": "name of some country",
    "millionaires": [
        {"millionaire_id": "ID of the first millionaire",
         "name": "name of the first millionaire",
         "money": 12000000,
        },
        {"millionaire_id": "ID of the second millionaire",
         "name": "name of the second millionaire",
         "money": 15000000,
        },
    ],
}

然后由于某种原因,我想替换第一个百万富翁的一些数据(金额变化等)。注意:我不知道哪个字段已更改。

我正在尝试做这样的事情:

db.countries.update({"_id": "country ID",
                     "millionaires.millionaire_id": "ID of the first millionaire"
                    },
                    {$set: {
                             "millionaire_id": "the same millionaire ID",
                             "value": "should be another value", ...
                           }
                    })

但这意外地起作用了:

db.countries.find().pretty();
{
"_id": "some ID goes here",
"longitude": "some longitude",
"latitude": "some latitude",
"name": "name of some country",
"millionaires": [
    {"millionaire_id": "ID of the first millionaire",
     "name": "name of the first millionaire",
     "money": 12000000,
    },
    {"millionaire_id": "ID of the second millionaire",
     "name": "name of the second millionaire",
     "money": 15000000,
    },
],
{
 "millionaire_id": "the same millionaire ID",
 "value": "should be another value", ...
}
}

所以,它在我的百万富翁名单中添加了一个新对象。

注意:更新的对象以编程方式进行,这就是为什么尝试这样的事情不是一个好主意:

new_object = {"millionaires. millionaire_id": "ID", "millionaires.name": "name", ...}

我有原始对象,并希望使用此对象更新现有元素。

有什么想法吗?

0 个答案:

没有答案