ich eine Abfrage auf diesem Schema durchführen möchten:Wie eine komplexe Abfrage in MongoDB auszuführen
{
"name" : "xxx",
"guests" : [
{
"category" : "category 1",
"arrived" : false
},
{
"category" : "category 2",
"arrived" : false
},
{
"category" : "category 1",
"arrived" : true
},
{
"category" : "category 2",
"arrived" : true
}
]
}
ich für einen bestimmten Namen erhalten möchten, eine Liste mit dem Prozentsatz der Gäste für jede Kategorie angekommen.
Für das Dokument oben als Beispiel mag ich erhalten:
{
name : "xxx",
results : [
{
category : "category 1",
arrived : 50 (percent)
},
{
category : "category 2",
arrived : 50 (percent)
},
]
Gibt es eine Möglichkeit, dies mit einer einzigen MongoDB Abfrage zu tun? Sollte ich diese Berechnung auch auf der Clientseite oder der Serverseite durchführen?
Adressierung, wo Sie die Berechnung tun sollten, in der Regel sollten komplexe Berechnungen auf der Client-Seite als MongoDB erfolgen soll ein großer, stumm Datenspeicher sein, die fast tut nicht wird bearbeitet. Es speichert und ruft nur Daten ab. Sie sollten dieses Ziel respektieren und versuchen, zu vermeiden, dass MongoDB Berechnungen durchführt, die auf dem Client ausgeführt werden können, es sei denn, Sie sind bereit, hohe Leistungseinbußen in Kauf zu nehmen. Selbst "triviale" Aufgaben wie das Finden von Durchschnitten oder Summierungsfeldern sollten generell an den Client weitergegeben werden. – chridam