Python 如何将行拆分为不同的集合,每个集合都以第一个集合的_id作为引用

Python 如何将行拆分为不同的集合,每个集合都以第一个集合的_id作为引用,python,mongodb,pymongo,Python,Mongodb,Pymongo,给定具有四个属性的以下行: { att1 : "att1", att2 : "att2", att3 : "att3", att4 : "att4"} 我想在MongoDB中将这一行存储到两个集合中。的_id collectionA将用作关系数据库中的外键 如何使用pymongo在MongoDB中高效地实现这一点 collectionA { "att1" : "att1" "att2" : "att2" "_id" : ObjectID("4e95e41a1d4

给定具有四个属性的以下行:

{ att1 : "att1", att2 : "att2", att3 : "att3", att4 : "att4"}
我想在MongoDB中将这一行存储到两个集合中。的_id collectionA将用作关系数据库中的外键

如何使用pymongo在MongoDB中高效地实现这一点

collectionA
{
    "att1"  : "att1"
    "att2"  : "att2"
    "_id"   : ObjectID("4e95e41a1d41c823d5000001")
}
collectionB
{
    "att3"   : "att3"
    "att4"   : "att4"
    "ref_id" : ObjectID("4e95e41a1d41c823d5000001")
    "_id"    : ObjectId("4e95f81587ebf9f190c3cc4e")
}
我在这里看到了一个关于JavaScript的帖子。但是每一次,, 我们必须先将文档插入collectionA,然后查询
刚插入的文档用于进一步操作。有更好的方法吗?

驱动程序实际上负责生成ObjectId值,因此它相当简单(下面我假设您的数据库存储在python变量“db”中):

导入bson
myrow={att1:“att1”,att2:“att2”,att3:“att3”,att4:“att4”}
ref_id=bson.ObjectId()
db.collectionA.insert({att1:myrow['att1'],att2:myrow['att2'],_id:ref_id})
db.collectionB.insert({att3:myrow['att3'],att4:myrow['att4'],ref_id:ref_id})