Mungo: wie aggregieren und zusammen zu finden
Wie kann ich Aggregat und find
zusammen im Mungo?
ich.e ich habe das folgende schema:
const schema = new Mongoose.Schema({
created: { type: Date, default: Date.now() },
name: { type: String, default: 'development' }
followers: [{ type: Mongoose.Schema.ObjectId, ref: 'Users'}]
...
})
export default Mongoose.model('Locations', schema)
Wie kann ich die Abfrage der Benutzer, die nur die Felder name
und followers_count
.
followers_count
: die Länge der followers
.
Dort, ich weiß, wir können wählen Sie zu bekommen, nur das Feld name
.
Wie können wir die Anzahl der followers
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für MongoDB 3.6 und höher, verwenden Sie die
$expr
Betreiber das ermöglicht die Verwendung von aggregation Ausdrücke in der Abfrage-Sprache:Für nicht-kompatible Versionen, die Sie verwenden können, sowohl die
$match
und$schwärzen
Leitungen zur Abfrage Ihrer Sammlung. Zum Beispiel, wenn Sie Abfragen möchten, dielocations
Sammlung, wo der name 'Entwicklung' undfollowers_count
größer als 30 ist, führen Sie die folgenden Aggregat-Betrieb:oder innerhalb einer einzelnen pipeline zu
Oben zurück, die Standorte nur mit der
_id
Referenzen von den Nutzern. Die Rückkehr der Benutzer Dokumente als Mittel zum "Auffüllen" der Anhänger array können Sie dann fügen Sie die$lookup
pipeline.Wenn die zugrunde liegenden Mongo server-version 3.4 und neuere Versionen, die Sie ausführen können, um die pipeline zu
sonst würden Sie brauchen, um
$entspannen
die Anhänger array vor der Anwendung$lookup
und dann neu formieren, mit$group
pipeline nach:Können Sie verwenden, wie die folgenden:
Im Spiel, die Sie tun können, Sachen wie:
In das Projekt, Sie können wählen Sie die gewünschten Felder mit den zahlen 0 oder 1 wie:
Dem 0 bedeutet, nicht gesetzt und 1 bedeutet stellen.