Mongo:获取未在另一个集合中引用的文档

时间:2012-09-14 00:44:22

标签: mongodb

让我们假设我的Mongo数据库中有两个集合:A& B。每个A文档可能引用B,但B文档没有引用回A

如何有效地查找BA中文档引用的 所有文档?

是否有比在B中检索所有文档并手动与A文档进行比较更有效的方法?可以用map reduce完成吗?

我是否应考虑将B的引用添加到A以支持查询?由于Mongo不支持事务,因此我避免了任何双向引用,以避免在发生故障时出现不一致状态的可能性。

此外,如果这会影响解决方案,我需要能够有效地浏览这些结果。

1 个答案:

答案 0 :(得分:1)

在伪代码中:

// Get the set of B document ids that are referenced by A documents.
var bref_ids = db.A.distinct('b_id');

// Get the set of all other B documents.
var unreferenced_b_docs = db.B.find({_id: {$nin: bref_ids}});