1

我有一个文档,其中嵌入了来自不同集合的另一个文档的 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' }
4

2 回答 2

0

如果它有效,它应该是这样的:

db.managers.find({
  '_id' => db->employees->find({ ('_id' : 1),
        ('_id': ObjectId("4d85c7039ab0fd70a117d733") }))
})

更新

于 2012-12-11T13:20:28.100 回答
0

你基本上做了一些 Mongo 不支持开箱即用的事情,实际上比单独使用这两个记录更痛苦。

基本上(在伪/JS代码中,因为我不是Python程序员):

var emp = db.employees.find({ name: 'Joe Smith' });
var mang = db.managers.find({ _id: emp._id });

你有它,你有两个单独的记录。您不能像@slownage 显示的那样链接并获得合并的结果或任何结果,因为 MongoDB 从一个 qauery 实际上会返回一个字典而不是该字段的值,即使您只指定一个要返回的字段也是如此。

因此,这确实是唯一的解决方案,将两者分开,然后对其进行处理。

编辑

您可以在这里使用 DBRef,但这与这样做几乎相同,唯一的区别是它是一个帮助器,可以将它放入您自己的模型中,而不是自己做。

于 2012-12-12T08:30:32.733 回答