Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于相似id创建边数据库_Python_Mongodb_Pymongo_Edges - Fatal编程技术网

Python 基于相似id创建边数据库

Python 基于相似id创建边数据库,python,mongodb,pymongo,edges,Python,Mongodb,Pymongo,Edges,我有一个与pymongo一起使用的mondgodb,一个条目如下所示: { "_id" : ObjectId( "52065432c36b44162f56f4a7" ), "user_id" : "22614761", "longitude" : 25.394902576, "created_time" : "1376144888", "latitude" : 36.476277607, "id" : "519463433050680017_22614761" } 我想找到

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

{ "_id" : ObjectId( "52065432c36b44162f56f4a7" ),
  "user_id" : "22614761",
  "longitude" : 25.394902576,
  "created_time" : "1376144888",
  "latitude" : 36.476277607,
  "id" : "519463433050680017_22614761" }
我想找到所有具有相似
用户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']})
a=db.col.find()
b=db.col.find()
对于我来说,在一个:
对于b中的q:
如果i[''u id']q['u id']和i['user\u id']==q['user\u id']:
插入({'source':i['user\u id'],'target':q['user\u id']})
.find()返回一个迭代器a=b——假设它实际上应该是b=a——只需在不同的名称下设置它,两个循环都使用相同的内存对象


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

好的,我可以用下面的代码解决它。
a
b
是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']})
a=db.col.find()
对象=[]
对于中的对象:
objects.append(对象)
对于对象中的i:
对于对象中的q:
如果i[''u id']q['u id']和i['user\u id']==q['user\u id']:
插入({'source':i['id'],'target':q['id']})

我已经试过了。虽然我得到了两个不同的对象:
但我不知道为什么这样做不起作用。@DDL449您能用两个
.find()
调用的版本更新这个问题吗?如前所述,除了
a=b/b=a
之外,外循环只会得到第一个项,内循环会耗尽其余项。