5

いくつかのレコードを返すには、「A OR B OR (C AND D)」という形式の MongoDB クエリを作成する必要があります。モデルへのデータ アクセスには Mongoid を使用しています。

any_of私はそのクエリを "(A OR B OR C) AND (A OR B OR D)" に拡張し、次のようなMongoid の Criteria メソッドを使用するModel.any_of(A, B, C).any_of(A, B, D)ことを望んでいました。 OR A OR B OR D" をデータベースに送信する前に。

このクエリを作成する方法はありますか、または A OR B を実行するクエリを作成し、C AND D を実行してそれらの結合を取る別のクエリを作成する必要がありますか?

4

3 に答える 3

3

(編集: この質問が 3 年前のものであることに気付きました。なぜ表示されたのかわかりません。)

次のようなものが必要です。

Model.any_of(a, b, c)

ここaで、b、 、およびcはセレクター ドキュメントです (覚えておいてください、これらは複数の句で AND されます)。

たとえば、クエリが次の場合:

{a: 1}
{b: 1}
{c: 1, d: 1}

次に、次を使用します。

Model.any_of( {a: 1}, {b: 1}, {c: 1, d: 1} )

これにより、次のようなクエリが生成されます。

models.find({$or: [{a: 1}, {b: 1}, {c: 1, d: 1}]})
于 2013-07-15T23:13:22.007 に答える
0

これは mongo のバグのようですが、mongo の問題が報告/追跡されている場所を特定するのに苦労しています。

> db.things.insert({x : 1, y: 2});
> db.things.insert({x : 2, y: 3});
> db.things.insert({x : 3, y: 4});
> db.things.find( { $or : [{x:1,x:2}], $or : [{y:1,y:2}] });
{ ..., "x" : 1, "y" : 2 }
{ ..., "x" : 2, "y" : 3 }
于 2010-10-05T16:13:52.800 に答える
0

このリンクを確認してください。お役に立てば幸いです -

http://mongoid.org/docs/querying/

おそらく可能であれば、「.any_in」と「.and」を組み合わせてチェックアウトできます。

于 2010-10-04T17:46:25.493 に答える