我需要向sha1具有文档中已存在的串联集合的所有文档添加一个字段
我有一个PHP脚本运行迁移并提取个人记录。然后很容易将“内爆”值散列,然后将sha1保存回数据库。
这个问题永远困扰着大型数据集。理想情况下,可以将其种到mongo并处理其余请求的一个“ updateMany”请求将更安全/更高效/更快。
do {
$itemIDs = DB::collection('items')
->where('deleted_at', 'exists', false)
->where('item_hash', null)
->limit(10000)
->get(["_id"]);
$ids = [];
foreach ($itemIDs as $itemID) {
$ids[] = $itemID['_id'];
}
$recordCount = count($itemIDs);
$itemChunks = array_chunk($ids, 100);
foreach ($itemChunks as $key => $itemChunk) {
$prods = Item::whereIn("_id", $itemChunk)->get();
foreach ($items as $item) {
$hash = sha1(implode("",$item->relationships['options']));
$item->item_hash = $hash;
$item->save();
}
}
} while ($recordCount > 0) ;
我想运行一个查询,该查询可以执行以下操作:
db.collection('items').updateMany(
{'deleted_at': {'$exists': false},'item_hash':null}
{'$set': {'item_hash': sha1($this.options.join('')}}
);