MongoDB查找并全部返回最大值

塞拉克

我正在尝试获取具有最大值的文档列表。如果我知道具有最大值的文档数(例如在另一个stackoverflow解决方案“ mongodb如何从集合中获取最大值”的解决方案中),则可以指定它,但是如果我不知道该怎么做,我可以指定它。不知道文件数量是多少。

例如,使用以下文档:

{name:"a", age:10}
{name:"b", age:11}
{name:"d", age:12}
{name:"c", age:12}

因此,我知道有2个文档的最大年龄为12岁。因此,我可以编写以下查询

db.collection.find().sort({age: -1).limit(2)

我使用它limit(2)是因为我知道有2个文档的最大值,但是如何使它自动化?我可以对具有最大值的记录进行计数,将其存储在变量中并像这样使用limit(n)吗?还有其他方法吗?

教授79

您可以使用聚合框架来获得结果

var group = {$group:{_id:"$age", names:{$push:"$name"}, count:{$sum:1}}}
var sort = {$sort:{"_id":-1}}
var limit= {$limit:1}
db.selrac.aggregate([group, sort, limit])

输出看起来像这样:

{
    "_id" : 12.0,
    "names" : [ 
        "d", 
        "c"
    ],
    "count" : 2.0
}

或者如果需要完整的文档参考,请用以下内容替换组:

var group = {$group:{_id:"$age", fullDocument:{$push:"$$ROOT"}, count:{$sum:1}}}

输出:

{
    "_id" : 12.0,
    "fullDocument" : [ 
        {
            "_id" : ObjectId("57509a890d4ae20f6de06657"),
            "name" : "d",
            "age" : 12.0
        }, 
        {
            "_id" : ObjectId("57509a890d4ae20f6de06658"),
            "name" : "c",
            "age" : 12.0
        }
    ],
    "count" : 2.0
}

欢迎任何意见!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按年份查找最大值并返回在Pandas DataFrame中出现最大值的日期

来自分类Dev

按年份查找最大值,并返回在Pandas DataFrame中出现最大值的日期

来自分类Dev

在列中查找最大值并返回行号

来自分类Dev

使用excel vba查找最大值并返回表的标题

来自分类Dev

递归函数查找最大值返回0s

来自分类Dev

查找键的最大值

来自分类Dev

QueryDSL返回最大值

来自分类Dev

返回最大值的索引

来自分类Dev

PHP-查找最大值/最大值

来自分类Dev

Excel:使用什么公式返回一组查找值的最小值或最大值?

来自分类Dev

查找连续相似值的最大值

来自分类Dev

查找哈希值的键的最大值

来自分类Dev

Excel查找值旁边的最大值

来自分类Dev

从MongoDB的仓库在春季启动查找最大值和最小值

来自分类Dev

Java 8查找最大值

来自分类Dev

查找列表的最大值(Python)

来自分类Dev

通过分组查找最大值

来自分类Dev

在C中查找char的最大值

来自分类Dev

用列表递归查找最大值

来自分类Dev

Spark Scala DataFrame查找最大值

来自分类Dev

查找10个线程的最大值

来自分类Dev

在CUDA中查找矩阵的最大值

来自分类Dev

查找自然联接表的最大值

来自分类Dev

查找最大值,除0外

来自分类Dev

在列表中查找最大值

来自分类Dev

在嵌套列表中查找最大值

来自分类Dev

用optim()查找方程的最大值

来自分类Dev

在行中查找最大值

来自分类Dev

动态连接列以查找最大值