Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用一个查询获取数据和总数据_Mongodb_Mongoose - Fatal编程技术网

Mongodb 使用一个查询获取数据和总数据

Mongodb 使用一个查询获取数据和总数据,mongodb,mongoose,Mongodb,Mongoose,假设我有这样的文档: [ { productName: 'Soap', qty: 12 }, { productName: 'Apple', qty: 14 }, ........ ] 如果要获取总数据,我使用以下查询: Model .find({condition}) .count(); Model .find({

假设我有这样的文档:

[
        {
          productName: 'Soap',
          qty: 12
        },
        {
          productName: 'Apple',
          qty: 14
        },
        ........
]
如果要获取总数据,我使用以下查询:

Model
   .find({condition})
   .count();
Model
   .find({condition})
   .skip(..)
   .limit(..);
如果我想通过分页获取数据,我使用以下查询:

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

是否可以通过一次查询获得总数据和数据?

为此,您需要使用MongoDB的聚合框架

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"
}
}
] )
我创建了以下文档

执行上述查询后,我得到以下输出:


为此,您需要使用MongoDB的聚合框架

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"
}
}
] )
我创建了以下文档

执行上述查询后,我得到以下输出: