Frage

Ich versuche, meinen Kopf um Mungo zu wickeln, aber ich habe eine harte Zeit für einige der erweiterten Abfragemöglichkeiten, jede Art von Dokumentation zu finden ist, insbesondere die .in und .Sort Methoden. Was ist die Syntax für die Sortierung, beispielsweise einer Person nach Alter?

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

Dann sagen wir, ich möchte einen Film zu finden, auf ein Genre basiert, wo ein Film viele Genres haben kann (in diesem Fall ein Array von Strings). Vermutlich würde ich die .in-Funktion verwenden, das zu erreichen, aber ich bin nicht sicher, was die Syntax wäre. Oder vielleicht habe ich die .in Methode nicht ... überhaupt zu benutzen? So oder so, ich bin verloren.

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

Wer irgendwelche Ideen? Oder noch besser, ein Link zu einem gewissen umfassenden Dokumentation?

Danke!
Chris

War es hilfreich?

Lösung

Ja, die Mungo-Dokumentation auf einige diese Dinge hinterherhinkt, und leider ist die Lösung nicht sehr intuitiv (kommt mit dem Gebiet, wenn etwas noch mit gehen durch eine schnelle Entwicklung und API-Änderungen auf dem Weg zur Version 1.0)

Unterdessen wird dies tun, was Sie suchen in Bezug auf Sortierung:

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

Was die Frage über komplexere verschachtelte Beziehungen, wenn Sie nicht bereits haben, können Sie mit der ausgezeichnet MongoDB Dokumentation , insbesondere die Artikel auf Schema Design , Erweiterte Abfragen und Dot Notation (erreicht in Objekte) . Zu wissen, MongoDB innen und außen sollte die murkier Teile Mungo eine Brise machen die Navigation.

Hier ist ein Beispiel für Filmgenres mit $ bei der Suche:

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

Andere Tipps

Daniels Antwort nicht für mich arbeiten. Ich glaube, die api hat sich geändert seit 1.0.14 (http://groups.google.com/group/mongoose-orm/browse_thread/thread/cc77914021940e73/34fc6f45938a2242?lnk=raot)

Das ist was für mich gearbeitet:

db.model("Person")
  .find()
  .sort('age', 1)
  .execFind(function(err, people) { 
 });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top