1

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

我怎样才能有效地找到文档中B引用的所有文档A

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

我应该考虑添加来自BtoA的引用来支持查询吗?由于 Mongo 不支持事务,因此我避免了任何两种方式的引用,以避免在发生故障时出现任何不一致的状态。

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

4

1 回答 1

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}});
于 2012-09-14T01:48:26.240 回答