相关疑难解决方法(0)

MongoDB聚合:如何获得总记录数?

我使用聚合来从mongodb获取记录.

$result = $collection->aggregate(array(
  array('$match' => $document),
  array('$group' => array('_id' => '$book_id', 'date' => array('$max' => '$book_viewed'),  'views' => array('$sum' => 1))),
  array('$sort' => $sort),
  array('$skip' => $skip),
  array('$limit' => $limit),
));
Run Code Online (Sandbox Code Playgroud)

如果我无限制地执行此查询,则将获取10条记录.但我想保持限制为2.所以我想得到总记录数.如何进行聚合?请指教.谢谢

mongodb

76
推荐指数
9
解决办法
9万
查看次数

使用限制时,使用MongoDB获取总文档数

我有兴趣优化我正在使用MongoDB的"分页"解决方案.我的问题很直接.我通常会限制使用该limit()功能返回的文档数量.这迫使我发出一个没有该limit()函数的冗余查询,以便我也可以捕获查询中的文档总数,这样我就可以将其传递给客户端,让他们知道他们必须发出额外的请求.检索其余文件.

有没有办法将其压缩为1个查询?获取文档总数但同时仅使用limit()?检索子集?是否有不同的方式来思考这个问题,而不是接近它?

pagination mongodb casbah mongodb-query aggregation-framework

33
推荐指数
8
解决办法
2万
查看次数

MongoDB 计数和结果

我会很感激,如果有人可以帮助我的东西:我需要一个正常的数据库查询,但正如我的收藏是非常大(10000个文档),我需要做的查询和使用$limit$skip。我解决了那部分,但现在我想对所有文件进行计数,即使返回的文件较少。输出应该是这样的:

{
     count: 1150,
     data: [/*length of 50*/]
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?非常感谢。

javascript mongodb mongodb-query

3
推荐指数
1
解决办法
3492
查看次数

MongoCursor没有count()方法?

所以我的代码是:

FindIterable<Document> findIterable = collection.find().skip(20).limit(10);
MongoCursor<Document> cursor = findIterable.iterator();
while (cursor.hasNext()) {
    Document doc = cursor.next();
    // My stuff with documents here
}
cursor.close(); // in finally block
Run Code Online (Sandbox Code Playgroud)

现在我想知道total count之前skip和之前的文件limit.

对于完全相同的问题有一个答案,但我mongo-java-driver v3.1.0和我使用的API是不同的.有没有方法count()size()在这两个FindIterableMongoCursor类.谢谢!

UPDATE

似乎唯一的解决方法是再次打电话给mongodb:collection.count正如@Philipp所说

java mongodb mongodb-java mongo-java-driver

1
推荐指数
1
解决办法
2662
查看次数