我的 JSON 文档(称为“i”)有子文档(称为“元素”)。我正在循环浏览这些子文档并一次更新它们。但是,要这样做(一旦计算出我需要的值),我让 mongo 扫描数据库中的所有文档,然后扫描所有子文档,然后找到它需要更新的子文档。
我遇到了重大的时间问题,因为我有大约 3000 个文档,这大约需要 4 分钟。我想知道是否有更快的方法来做到这一点,而 mongo 不必扫描所有文档,而是在循环中进行。
这是代码:
for i in db.stuff.find():
for element in i['counts']:
computed_value = element[a] + element[b]
db.stuff.update({'id':i['id'], 'counts.timestamp':element['timestamp']},
{'$set': {'counts.$.total':computed_value}})
我通过“id”标识整个文档,然后通过时间戳标识子文档(每个子文档都是唯一的)。我需要找到比这更快的方法。感谢您的帮助。