我有一个文档,其中包含嵌入其中的不同集合中的另一个文档的id。
我想要的结果是返回(我正在使用python和pymongo)第一个集合的所有字段,以及嵌入文档中的所有朋友。
我知道mongo没有加入,我明白我需要进行两次查询。我也不想复制我的数据。
我的问题是如何在python / pymongo中将两个查询拼凑在一起,所以我有一个结果,其中包含两个文档中的所有字段。
以下是我的数据:
db.employees
{_id: ObjectId("4d85c7039ab0fd70a117d733"), name: 'Joe Smith', title: 'junior',
manager: ObjectId("4d85c7039ab0fd70a117d730") }
db.managers
{_id: ObjectId("ObjectId("4d85c7039ab0fd70a117d730"), name: 'Jane Doe', title: 'senior manager'}
期望的结果
x = {_id: ObjectId("4d85c7039ab0fd70a117d733"), name: 'Joe Smith', title: 'junior',
manager: 'Jane Doe' }
答案 0 :(得分:0)
如果它有效,它应该是这样的:
db.managers.find({
'_id' => db->employees->find({ ('_id' : 1),
('_id': ObjectId("4d85c7039ab0fd70a117d733") }))
})
更新
答案 1 :(得分:0)
你基本上做了Mongo不支持的东西,实际上比分别使用这两个记录更痛苦。
基本上(因为我不是Python程序员,所以在伪/ JS代码中):
var emp = db.employees.find({ name: 'Joe Smith' });
var mang = db.managers.find({ _id: emp._id });
你有它,你分别有两个记录。您不能链接为@slownage显示并获得合并结果,或任何结果因为MongoDB,来自一个qauery,实际上将返回字典而不是字段的值,即使您只指定一个要返回的字段。
所以这真的是唯一的解决方案,分别将两者分开,然后对它们进行处理。
你可以在这里使用DBRef但它与这样做完全相同,唯一的区别是它是一个帮助器,将它放入你自己的模型而不是你自己做。