根据类似的id创建边缘数据库

时间:2013-08-10 18:15:04

标签: python mongodb pymongo edges

我有一个与pymongo一起使用的mondgodb,条目如下:

{ "_id" : ObjectId( "52065432c36b44162f56f4a7" ),
  "user_id" : "22614761",
  "longitude" : 25.394902576,
  "created_time" : "1376144888",
  "latitude" : 36.476277607,
  "id" : "519463433050680017_22614761" }

我想查找具有相似user_id的所有数据,并将其id存储在新数据库中。例如。一个新创建的条目:

{"target":"519463433050680017_22614761", "source" : "518989990404955532_361611158"}

我尝试了以下代码,但外部循环卡在第一个值上。

a = db.col.find()
b = db.col.find()
for i in a:
    for q in b:
        if i['_id'] <>  q['_id'] and i['user_id'] == q['user_id']:
            edges.insert({'source':i['user_id'],'target': q['user_id']})

2 个答案:

答案 0 :(得分:1)

.find()返回一个迭代器,a = b - 假设实际上应该是b = a - 只是将它设置在一个不同的名称下,两个循环都是从相同的内存中对象中消耗的。

执行a = db.col.find()和b = db.col.find()以获取独立的迭代器。

答案 1 :(得分:0)

好吧我能用以下代码解决它。 ab是pymongo游标,由于某种原因(我很乐意听到有人知道)不像字典那样。

a = db.col.find()
bjects = []
for object in a:
       objects.append(object)


for i in objects:
    for q in objects:
        if i['_id'] <>  q['_id'] and i['user_id'] == q['user_id']:
            edges.insert({'source':i['id'],'target': q['id']})