web-dev-qa-db-ja.com

配列フィールドのモンゴイドクエリ

MongoidにcategorytypeArrayフィールドがあります。

例カテゴリ:["val1"、 "val2"、 "val3"]

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

Model.where(category: "val1")およびModel.where(category: "val2")

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

Model.all_of({category: "val1"},{category: "val2"}).allも試しましたが、機能しません。

どうすればよいですか?

16
mrudult

モンゴイドには、「$ in」演算子があります。だからあなたはこれを行うことができます:

Model.where(category: { '$in': ['val1', 'val2'] })
29
kd12

Criteriaall_inを使用すると、簡単になります。

Model.all_in(category: ['val1','val2'])
11
borjagvo

これはうまくいった

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

From Mongo Docs

7
Maged Makled

または別のバリアント:

Model.in(category: ['val1','val2'])
1
Jon Kern