Tony
Tony

Reputation: 19126

How do I sort a MongoDB collection by a field in an embedded document using Mongoid?

I want to run this query using Mongoid:

db.users.find().sort({'users.roles.name':1})

What will that look like in Mongoid? Or maybe there is an easy way to have Mongoid just execute that custom query?

Upvotes: 5

Views: 6003

Answers (3)

Loki Xie
Loki Xie

Reputation: 11

This will work:

db.users.find().sort("{\"roles\":{\"name\":1}}");

Upvotes: 1

Andrew Orsich
Andrew Orsich

Reputation: 53675

First of all can you answer to the one simple question: How to sort documents by array? Yes, i also don't know..

I suppose that you can sort by specific role, using positional operator:

db.users.find().sort({'roles.0.name':1})

But i am not sure and can't test it right know and mb it's not exactly what you need. In any way you can test and come back with results, otherwise i will figure out it tomorrow.

Upvotes: 5

Paul Elliott
Paul Elliott

Reputation: 1184

User.asc("roles.name") should do it for you.

Upvotes: 4

Related Questions