mongodb コレクション A と B があるとします。A には b_id という B への外部キーがあります。
MongoDB (または Ruby の方が優れている) で次のクエリを実行するにはどうすればよいですか。
select * from A where b_id not in (select id from B where <some_condition> );
MongoDB はリレーショナル クエリを実行しません (理由もなくNoSQLと呼ばれることはありません)。ただし、これを実現する方法は他にもあります。
Mongo クライアントで 2 段階のクエリを実行します。最初に内部配列を取得し、次に$nin 演算子を使用します。
var ids = db.B.find(条件); db.A.find( { b_id: { $nin: ID } } );
まだ設計段階にある場合は、スキーマにネストされたドキュメントを使用することを検討できます。たとえば、Bに多数の Aがある場合、 Aの配列を各Bにプロパティとして追加できます。(ただし、MongoDB のドキュメント サイズには制限があるため、特定のB内のAの数が非常に大きくなる可能性がある場合、これは適切な解決策ではないことに注意してください。)