2016-11-15 1 views
1

sagen, ich habe Dokumente wie folgt aus:Daten und die Gesamtdaten optimal nutzen können eine Abfrage mit

[ 
     { 
      productName: 'Soap', 
      qty: 12 
     }, 
     { 
      productName: 'Apple', 
      qty: 14 
     }, 
     ........ 
] 

Wenn ich die Gesamtdaten erhalten möchten, ich diese Abfrage verwendet:

Model 
    .find({condition}) 
    .count(); 

Wenn ich will, die Daten mit Paginierung zu bekommen, habe ich diese Anfrage:

Model 
    .find({condition}) 
    .skip(..) 
    .limit(..); 

Ist es möglich, Gesamtdaten und die Daten mit nur einer Abfrage zu bekommen?

Antwort

0

müssen Sie das aggregierte Framework der MongoDB dafür verwenden.

db.kim1.aggregate([ 
{ 
"$match" : { 
"productName" : "orange" 
} 
}, 
{ 
"$group" : { 
"_id" : null, 
"my_documents" : { 
"$push" : { 
"_id" : "$_id", 
"productName" : "$productName", 
"qty" : "$qty" 
} 
}, 
"docCount" : { 
"$sum" : 1 
} 
} 
}, 
{ 
"$project" : { 
"_id" : 0, 
"my_documents" : 1, 
"total" : "$docCount" 
} 
} 
]) 

i erstellt die folgenden Dokumente enter image description here

und sobald ich die obige Abfrage i folgende Ausgabe ausführen:

enter image description here

Verwandte Themen