我有一个拥有130万个文档的数据库,其中包含以下架构:
{
"_id" : ObjectId("592b04226e46690549744e71"),
"game" : "xyz",
"game_id" : "161936",
"username" : "jomonsugi",
"rating" : 10,
"comment" : "Good game. "
}
在整个数据库中,有多次出现相同的用户名。我想添加一个新字段,为每个用户提供自己唯一的ID。示例:" user_id" :" 12345"。所以在上面的示例中,db中的每个文档都带有" username" :" jomonsugi"将为每个匹配项添加一个字段/值,并为每个匹配项添加相同的唯一user_id。
我有一些有用的东西,但需要几个小时(字面意思),随着数据库的增长,它需要数天。我使用distinct从db获取所有用户的列表,然后我在字典中为所有用户提供唯一的ID号{"用户名" :" user_id"}然后我使用update:
client = MongoClient()
db = client.bgg
for k,v in id_dic.items():
print(k,v)
db.game_comments.update({ 'username': k } ,{ '$set' : { 'user_id': v } }, multi = True )
这很好用,我已经看到了更新方法有多慢的帖子,但有没有办法更快地完成这项任务?也许我错过了一个mongo功能?