如何更新mongodb文档中的_id字段

时间:2014-04-17 10:04:42

标签: mongodb

我的文件格式如下:

{
  _id: "1232014",
  account: "123",
  year: 2014,
  country: 826
}

_id字段由account字段和year字段组合而成。

但是,我发现同一年的同一个帐户可以在不同的国家/地区拥有数据,而且我发现了重复的密钥错误。

我需要做的是将country字段作为_id字段的一部分,例如

_id: "1232014826"

由于我在文档中使用了值作为更新的一部分,我认为我不能使用$set,因此我尝试在{{save()内使用forEach() 1}}查询:

db.account_data.find({"_id" : "1232014"}).forEach(function(doc) {
    doc._id = doc._id + doc.country;
    db.collection.save(doc);
});

这不起作用。

有没有办法更新_id?或者这是不可能的,因为它是主要关键领域?

1 个答案:

答案 0 :(得分:2)

是的,这是不可能的,因为 是主键字段。如果您确实想要这样做,那么您实际在做的是插入一个新文档并删除旧文档:

db.account_data.find({"_id" : "1232014"}).forEach(function(doc) {
    var oldId = doc._id;
    var doc._id = doc._id + doc.country;
    db.collection.remove({ _id: oldId });
    db.collection.save(doc);
});
相关问题