0

我有一个 MongoDB 文档,如下所示:

"sport": "NFL",
"team_id": 5,
"week_num": 6,
"meta": {
   .... more data ....,
   "season_year": 2013
}

我想做的是将season_year密钥/验证复制到“顶级”文档,同时将其嵌meta入哈希中。所以它将被复制,最终结果如下所示:

"sport": "NFL",
"team_id": 5,
"week_num": 6,
"season_year": 2013,
"meta": {
   .... more data ....,
   "season_year": 2013
}

是否有一种简单的方法可以使用上述逻辑更新我的集合中的所有文档?我在用MongoDB shell version: 2.4.3

4

1 回答 1

6

问题是在更新过程中,您无法引用您正在更新的文档。所以你不能在一个查询中实现你想要的。

您需要遍历所有文档并一一保存:

db.yourCollection.find({}).forEach(function(doc) {
  doc.season_year = doc.meta.season_year;
  db.yourCollection.save(doc);
});
于 2013-11-06T23:23:35.443 回答