0

我有一个与 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']})
4

2 回答 2

1

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

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

于 2013-08-10T18:18:24.753 回答
0

好吧,我能够使用以下代码解决它。aand是 pymongo 游标,由于b某种原因(如果有人知道,我会很高兴听到)没有像字典一样工作。

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']})
于 2013-08-11T09:57:55.953 回答