对于语句
db.order.insert(
{
'_id': 2,
'user_id': {'$ref': 'user', '$id': 2}
}
)
其中order的user_id字段引用了user集合里的id字段
python代码:
import pymongo
from bson.dbref import DBRef
if __name__ == '__main__':
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
mydb['order'].insert(
{
'_id': 2,
'user_id': DBRef("user", "2")
}
)
结果:
查询:
对于语句
a = db.getCollection("order").findOne({"_id":1}).user_id
db.getCollection(a.$ref).findOne({"_id":a.$id})
结果:
pymongo的实现
import pymongo
if __name__ == '__main__':
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test"]
db_ref = mydb['order'].find_one({"_id": 1})['user_id']
print(mydb[db_ref.collection].find_one({'_id': db_ref.id}))
结果:
参考资料:
https://www.cnblogs.com/GtShare/p/7736603.html
https://www.xp.cn/c.php/76526.html
https://www.cnblogs.com/ExMan/p/10735615.html
https://www.runoob.com/mongodb/mongodb-database-references.html