Question

I'm trying to wrap my head around mongoose, but I'm having a hard time finding any kind of documentation for some of the more advanced query options, specifically the .in and .sort methods. What's the syntax for sorting, for example, a Person by age?

db.model("Person").find().sort(???).all(function(people) { });

Then, let's say I want to find a Movie based on a genre, where a Movie can have many genres (in this case, an array of strings). Presumably, I'd use the .in function to accomplish that, but I'm not sure what the syntax would be. Or perhaps I don't have to use the .in method at all...? Either way, I'm lost.

db.model("Movie").find().in(???).all(function(movies) { });

Anyone have any ideas? Or even better, a link to some comprehensive documentation?

Thanks!
Chris

Was it helpful?

Solution

Yeah, the mongoose documentation is lagging on some of these things, and unfortunately the solution is not very intuitive (comes with the territory when using something still going through rapid development and API changes on the way to version 1.0)

Meanwhile, this will do what you're looking for in terms of sorting:

db.model("Person").find().sort([['age','ascending']]).all(function(people) { });

As for the question about more complex nested relationships, if you haven't already, you may want to start with the excellent MongoDB documentation, specifically the articles on Schema Design, Advanced Queries and Dot Notation (reaching into objects). Knowing MongoDB inside and out should make navigating the murkier parts of mongoose a breeze.

Here's an example for finding movies by genre using $in:

db.model("Movie").find({ 'genres': { $in: ['Horror','Comedy'] } }).all(function(movies) { });

OTHER TIPS

Daniel's answer didn't work for me. I believe the api has changed since 1.0.14 (http://groups.google.com/group/mongoose-orm/browse_thread/thread/cc77914021940e73/34fc6f45938a2242?lnk=raot)

This is what worked for me:

db.model("Person")
  .find()
  .sort('age', 1)
  .execFind(function(err, people) { 
 });
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top