假设我有一个 mongodb 集合 A 和 B。而 A 对 B 有一个称为 b_id 的外键。
我如何在 MongoDB 中(甚至在 ruby 中更好)执行以下查询:
select * from A where b_id not in (select id from B where <some_condition> );
MongoDB 不执行关系查询(它不是无缘无故地称为NoSQL)——但还有其他方法可以完成此任务。
在 Mongo 客户端中运行两步查询,首先获取内部数组,然后使用$nin 运算符:
var ids = db.B.find( 条件 ); db.A.find( { b_id: { $nin: ids } } );
如果您仍处于设计阶段,您可以考虑为您的模式使用嵌套文档。例如,如果B有很多A ,那么您可以将A数组添加到每个B作为属性。(但请记住,MongoDB 中的文档大小是有限制的,因此如果任何给定B中的A的数量可能非常大,这不是一个好的解决方案。)