Frage

Ich habe ausgecheckt eine ältere Frage Das hängt mit meiner eingebetteten Paging -Situation zusammen. Obwohl das eingebettete Paging mit Schneiden einwandfrei funktioniert, die Alle Seiten Die Lösung fehlt immer noch, und ich frage mich, ob es möglich ist, die Gesamtgröße der Kommentare auf der Serverseite zu erhalten.

Gibt es eine Möglichkeit, die Größe des eingebetteten Arrays auf dem Server abzufragen oder zu zählen, ohne das gesamte Dokument in meine App abrufen und manuell zählen zu müssen?

Es macht mir nichts aus, 2 Abfragen dafür zu machen, 1 für das Pagieren des Kommentars, 1 für die Gesamtzahl der Kommentare. Wenn ich das in einer Abfrage machen kann, wird das jedoch erstaunlich.

Übrigens verwende ich den Java-Treiber und den Federdaten-MongoDB.

Bitte teilen Sie Ihre Gedanken mit. Vielen Dank !

War es hilfreich?

Lösung

Die beste/schnellste Möglichkeit, die Gesamtzahl eingebetteter Dokumente zu erhalten, besteht darin, ein zusätzliches Feld zu erstellen und nach jedem Update/Einfügen neu zu berechnen. Dokument wird so sein

{
  _id: 1,
  comments: [],
  commentsCount: 5
}

Dann können Sie einfach einschließen commentsCount Feld WENN TO SCHNITT:

//this query will include only 10 comments _id and comments count of root document
db.articles.find({}, {comments:{$slice: [20, 10]}, _id:1, commentsCount: 1}) 

Und tatsächlich gibt es keine andere Möglichkeit, die Gesamtzahl eingebetteter Dokumente zu berechnen (ich spreche nicht über M/R, da es für Echtzeitanfragen langsam ist)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top