Python 基于相似id创建边数据库
我有一个与pymongo一起使用的mondgodb,一个条目如下所示: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" } 我想找到
{ "_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
之外,外循环只会得到第一个项,内循环会耗尽其余项。