如何根据此条件在MongoDB中更新约20,000条记录
如何根据此条件在MongoDB中更新约20,000条记录
我有一个MongoDB文档,内容如下:
"sport": "NFL",
"team_id": 5,
"week_num": 6,
"meta": {
.... 更多数据 ....,
"season_year": 2013
}
我想要的是将season_year
键/值复制到"顶层"文档中,同时也保留它嵌入在meta
哈希中。因此,它将被复制,并且最终结果将如下所示:
"sport": "NFL", "team_id": 5, "week_num": 6, "season_year": 2013, "meta": { .... 更多数据 ...., "season_year": 2013 }
是否有一种简单的方法可以使用上述逻辑更新我的集合中的所有文档?我使用的是MongoDB shell版本:2.4.3
。
如何使用MongoDB更新约20,000条记录以满足特定条件
问题的原因是在更新过程中,无法引用正在更新的文档。因此,无法在一次查询中实现所需的功能。
解决方法是需要遍历所有的文档,逐个保存它们:
db.yourCollection.find({}).forEach(function(doc) { doc.season_year = doc.meta.season_year; db.yourCollection.save(doc); });
以上代码将遍历集合中的每个文档,并将其season_year
字段更新为meta.season_year
的值,然后保存文档。
通过这种方式,可以通过迭代每个文档来更新所有满足特定条件的记录。