我的JSON文檔(稱爲「我」)有子文檔(稱爲「元素」)。 我正在循環這些子文檔,並一次更新它們一個。然而,爲了做到這一點(一旦我需要的值被計算出來),我有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」,然後通過它的時間標記子文檔(它是唯一的每個子文檔)識別整個文檔。我需要找到比這更快的方法。感謝您的幫助。
你需要更新每個文件N次(每個元素)?爲什麼不更新蟒蛇整個文檔,然後做整體結構的單一db.stuff.update? –