在mongodb数据库中为每一个唯一字段出现一个新的唯一字段

时间:2017-06-09 19:34:51

标签: python mongodb

我有一个拥有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功能?

0 个答案:

没有答案