Mungo, Sortieren Sie die Abfrage durch besiedeltes Gebiet
Soweit ich weiß, ist es möglich die Art besiedelt docs mit Mungo (Quelle).
Ich bin auf der Suche nach einem Weg, um eine Abfrage Sortieren, indem Sie einen oder mehr bevölkerten Bereichen.
Betrachten Sie diese zwei Mungo-schemas :
var Wizard = new Schema({
name : { type: String }
, spells : { [{ type: Schema.ObjectId, ref: 'Spell' }] }
});
var Spell = new Schema({
name : { type: String }
, damages : { type: Number }
});
JSON-Beispiel:
[{
name: 'Gandalf',
spells: [{
name: 'Fireball',
damages: 20
}]
}, {
name: 'Saruman',
spells: [{
name: 'Frozenball',
damages: 10
}]
}, {
name: 'Radagast',
spells: [{
name: 'Lightball',
damages: 15
}]
}]
Möchte ich Sortieren Sie diese Assistenten durch Ihre Zauber-Schaden, mit so etwas wie :
WizardModel
.find({})
.populate('spells', myfields, myconditions, { sort: [['damages', 'asc']] })
//Should return in the right order: Saruman, Radagast, Gandalf
Ich bin eigentlich tun diese Art von Hände, nachdem Sie die Abfragen und optimieren möchten, die.
- Welche version von Mongoose verwenden Sie? Ich kenne die Sortierung syntax ziemlich verändert in 3.0.
- Ich bin mit Mungo 2.5.14. Ich habe eine wichtige demonstration der mein Projekt in zwei Tagen, also werde ich nicht das Risiko eingehen, meinen stack aktualisieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fragen Sie sich(und hier sind die Antworten):
Was ich will?
Art Zauberer, die von Ihren Zauber-Schaden(sollte es einen zusätzlichen Bereich, wohl die Summe der spells Schaden.
Was ich gemacht habe:
Ich habe sortiert die SPELLS des wizard.
Was sollten Sie tun:
Wizard.find({}).sort({ power : 'asc' })
und dann Auffüllen mit zaubern und tun, was Sie möchten.Energie ist ein weiteres Feld im Wizard. Sie werden es brauchen, denn selbst wenn Sie füllen Sie Ihre Zaubersprüche, Sie haben eine Reihe von zaubern und es wird Ihnen nicht helfen.
Hoffe, das hilft.
Können Sie implizit geben Sie nur den gewünschten Parametern füllen Methode:
Haben Sie einen Blick auf http://mongoosejs.com/docs/api.html#document_Document-populate
Hier ist ein Beispiel aus einem link oben.
Obwohl dies eher ein Alter post, ich möchte gerne eine Lösung, durch die MongoDB aggregation lookup-pipeline
Der wichtigste Teil ist dieser:
Unten finden Sie ein vollständiges Beispiel
hier ist die Probe von Mungo doc.