给定以下具有四个属性的行:
{ 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的solution。但是,每一次, 我们必须首先将文档插入到collectionA,然后查询_id 刚插入的文档用于进一步操作。还有更好的方法吗?
答案 0 :(得分:1)
驱动程序实际上负责生成ObjectId值,所以它相当简单(下面我假设你的数据库存储在python变量'db'中):
import 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})