如何使用此条件更新MongoDB中的~2,000条记录

ran*_*its 0 javascript mongodb

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

"sport": "NFL",
"team_id": 5,
"week_num": 6,
"meta": {
   .... more data ....,
   "season_year": 2013
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是将season_yearkey/val 复制到"顶级"文档,同时将其嵌入到meta散列中.所以它会重复,最终结果如下:

"sport": "NFL",
"team_id": 5,
"week_num": 6,
"season_year": 2013,
"meta": {
   .... more data ....,
   "season_year": 2013
}
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来更新我的集合中的所有文档与上述逻辑?我在用MongoDB shell version: 2.4.3

Sal*_*ali 6

问题是在更新期间,您无法引用要更新的文档.所以你无法在一个查询中实现你想要的.

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

db.yourCollection.find({}).forEach(function(doc) {
  doc.season_year = doc.meta.season_year;
  db.yourCollection.save(doc);
});
Run Code Online (Sandbox Code Playgroud)