17

私はMongoid のcategoryフィールドを持っています。type Array

元。カテゴリ: ["val1","val2","val3"]

ここで、このモデルを `category: ["val1","val2"] でクエリして、次のマージを返すようにします。

Model.where(category: "val1") と Model.where(category: "val2")

配列の要素ごとに個別に実行できますが、個々の要素ごとにすべてのドキュメントを検索するため、遅くなると思います。

私も試しModel.all_of({category: "val1"},{category: "val2"}).allましたが、うまくいきません。

どうすればいいですか?

4

4 に答える 4

35

mongoid には $in 演算子があります。だからあなたはこれを行うことができます:

Model.where(category: { '$in': ['val1', 'val2'] })
于 2013-11-08T21:15:11.817 に答える
11

Criteria all_inを使用して簡単にすることができます。

Model.all_in(category: ['val1','val2'])
于 2014-10-29T15:33:40.843 に答える
7

これはうまくいきました

Model.where(:category.in => ['val1','val2'])

モンゴのドキュメントから

于 2016-02-19T20:38:11.053 に答える