Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 236
Tony Avatar asked Mar 01 '11 16:03

Tony


2 Answers

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.

like image 148
Andrew Orsich Avatar answered Nov 09 '22 18:11

Andrew Orsich


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

like image 30
Paul Elliott Avatar answered Nov 09 '22 16:11

Paul Elliott