让我们假设我的Mongo数据库中有两个集合:A
& B
。每个A
文档可能引用B
,但B
文档没有引用回A
。
如何有效地查找B
中A
中文档引用的 所有文档?
是否有比在B
中检索所有文档并手动与A
文档进行比较更有效的方法?可以用map reduce完成吗?
我是否应考虑将B
的引用添加到A
以支持查询?由于Mongo不支持事务,因此我避免了任何双向引用,以避免在发生故障时出现不一致状态的可能性。
此外,如果这会影响解决方案,我需要能够有效地浏览这些结果。
答案 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}});