我在Python / PyMongo中有代码(代码应该模拟内部联接和第二个集合中的所有文档(在内部嵌入)并添加到Mongo中的第一个适当的文档)。想法是加载两个集合并传递两个字段(连接字段的名称)和第二个集合中的所有文档,具有相同的属性,如第一个放入列表中,并添加到第一个集合中的相应文档。
(例如在第一次收集中我有文件“file”,“人口”,第二次有“国家”和“汽车工厂”,想把(denormalize)所有的第一个收集清单适当国家的工厂)
for f in first_collection_records:
temp=[]
id=f['_id']
second_collection_records.rewind()
for s in second_collection_records:
if f[field_one]==s[field_two]:
temp.append(s)
f[self.__second_collection_name__]=temp
first_collection_records.update({"_id":id}, f, safe=True)
但我收到错误'Cursor'对象没有属性'update'。我做错了什么?
答案 0 :(得分:6)
first_collection_records
是pymongo.cursor.Cursor
个对象。这是你拨打db.first_collection.find()
时得到的结果。您需要在原始update
对象上调用collection
:
# assuming your query looked something like this
first_collection_records = db.first_collection.find()
# your code here....
# your last line should reference the collection object to do the update
db.first_collection.update({"_id":id}, f, safe=True)