mrudult
mrudult

Reputation: 2570

Mongoid query for array field

I have a category field of type Array in Mongoid.

Ex. category: ["val1","val2","val3"]

Now I want to query this Model with `category: ["val1","val2"] such that it returns me the merge of

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

I can do it individually for each element of the array but that will be slow I guess because for every individual element it will search all the documents.

I also tried Model.all_of({category: "val1"},{category: "val2"}).all but that is not working.

How should I do this?

Upvotes: 20

Views: 17797

Answers (4)

Jon Kern
Jon Kern

Reputation: 3235

Or another variant:

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

Upvotes: 2

Maged Makled
Maged Makled

Reputation: 1986

This worked

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

From Mongo Docs

Upvotes: 9

borjagvo
borjagvo

Reputation: 2071

You can use Criteria all_in to make it simpler:

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

Upvotes: 13

kd12
kd12

Reputation: 1351

In mongoid, there is '$in' operator. So you can do this :

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

Upvotes: 38

Related Questions