問題:我目前擁有包含100,000個文檔的mongo集合。每個文件有3個字段(_id,名稱,年齡)。我想爲每個名爲hashValue的文檔添加第4個字段,它存儲每個文檔名稱字段的md5哈希值。將md5哈希值添加到mongo集合
我目前可以通過mongo shell或通過Mongoose ODM與我的集合進行交互,作爲nodeJS應用程序的一部分。
可能的解決方案:
- 使用貓鼬/的NodeJS:
我知道這是不行的(不信你可以通過這種方式光標迭代),但希望它顯示了我想要做的事情。
var crypto = require('crypto');
MyCollection.find().forEach(function(el){
var hash = crypto.createHash('md5').update(el.name).digest("hex");
el.name = hash;
el.save()
});
使用蒙戈殼牌 - 幾乎與上面相同,並且我實現類似上述語法會工作。唯一的問題是我不知道如何在mongo shell中創建md5哈希。但是我能夠遍歷每個文檔並添加一個字段。
(可能的解決方法) - 這樣做的目標是能夠基於名稱值的md5散列進行查詢。我相信mongo允許你創建一個散列索引(link here)。唯一的問題是,我找不到任何人使用這個查詢的例子(似乎只用於分片),我不知道這是否會在以後工作。 (例如:我想MD5哈希我從用戶那裏收集的名稱,然後查詢我的蒙戈集合,看看我能找到MD5哈希的散列值字段)
這適用於mongo控制檯中的更新。如果需要用貓鼬進行更新,請參閱下面的答案。 – user2263572