2012-05-17 55 views
0

假设我有一个mongodb集合A和B. 虽然A有一个B的外键叫做b_id。mongodb中的关系条件

我怎样做MongoDB中(甚至红宝石越好)以下查询:

select * from A where b_id not in (select id from B where <some_condition>); 

回答

1

的MongoDB没有做关系查询(它不是所谓的NoSQL 原因) - 但有是其他方式,你可以做到这一点。

  1. 在蒙戈客户端运行的两步查询,第一获取内部阵列,然后使用$nin operator

    变种IDS = db.B.find(条件); db.A.find({b_id:{$ nin:ids}});

  2. 如果您仍处于设计阶段,您可以考虑为您的模式使用嵌套文档。例如,如果有许多,则可以添加的阵列以每作为属性。 (请记住,虽然,有一个limit to document size in MongoDB,所以这不是一个很好的解决方案,如果在任何给定的一个数量可能会非常大。)

+0

谢谢。我不能嵌入它应该保持独立的对象。但我会尝试第一个选项。 –