2011-10-12 58 views
0

考虑下面的一行四个属性:如何将第一个集合的_id分裂一行到不同的集合,每个店作为参考

{ att1 : "att1", att2 : "att2", att3 : "att3", att4 : "att4"} 

我想此行存储到MongoDB中两个集合。 collectionA的_id将被用作关系数据库中的外键。

如何在pongongo中有效地在MongoDB中实现?

collectionA 
{ 
    "att1" : "att1" 
    "att2" : "att2" 
    "_id" : ObjectID("4e95e41a1d41c823d5000001") 
} 
collectionB 
{ 
    "att3" : "att3" 
    "att4" : "att4" 
    "ref_id" : ObjectID("4e95e41a1d41c823d5000001") 
    "_id" : ObjectId("4e95f81587ebf9f190c3cc4e") 
} 

我看到有一个solution在此处张贴的是JavaScript。但是,每次我们必须先将文档插入到collectionA中,然后查询刚插入的文档的_id以进一步操作。有没有更好的办法?

回答

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}) 
相关问题