0

mongodb コレクション A と B があるとします。A には b_id という B への外部キーがあります。

MongoDB (または Ruby の方が優れている) で次のクエリを実行するにはどうすればよいですか。

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

1 に答える 1

1

MongoDB はリレーショナル クエリを実行しません (理由もなくNoSQLと呼ばれることはありません)。ただし、これを実現する方法は他にもあります。

  1. Mongo クライアントで 2 段階のクエリを実行します。最初に内部配列を取得し、次に$nin 演算子を使用します。

    var ids = db.B.find(条件); db.A.find( { b_id: { $nin: ID } } );

  2. まだ設計段階にある場合は、スキーマにネストされたドキュメントを使用することを検討できます。たとえば、Bに多数の Aがある場合、 Aの配列を各Bにプロパティとして追加できます。(ただし、MongoDB のドキュメント サイズには制限があるため、特定のB内のAの数が非常に大きくなる可能性がある場合、これは適切な解決策ではないことに注意してください。)

于 2012-05-17T09:17:57.917 に答える