当前位置: 首页 > 知识库问答 >
问题:

如何获得MongoDB集合中的最低值?

呼延光明
2023-03-14

我有一个名为product的MongoDB集合,其中包含以下文档,如下所示。

{
    "product" : "Milk",
    "barcode" : 12345,
    "price" : 100,
    "store" : "BestBuy"
},
{
    "product" : "Milk",
    "barcode" : 12345,
    "price" : 100,
    "store" : "WalMart"
},
{
    "product" : "Milk",
    "barcode" : 12345,
    "price" : 130,
    "store" : "Target"
},
{
    "product" : "Milk",
    "barcode" : 12345,
    "price" : 500,
    "store" : "Game"
}

我想查询收款情况,只退回价格最低的单据,例如:

{ 
    product: "Milk",
    barcode: 12345, 
    price: 100, 
    store: "BestBuy"
}
{ 
    product: "Milk",
    barcode: 12345, 
    price: 100,
    store: "WalMart"
}

但当我运行聚合查询时:

db.test.aggregate([{$match:{barcode:1234}},{$group: {_id:"$name", price:  {$min:"$price"} } }])

它只返回一个文档。

共有1个答案

年光明
2023-03-14

您需要按“价格”对文档进行$group。从这里开始,您可以按“_id”升序对它们进行$sort排序,并使用$limit返回第一个文档,该文档只包含具有最小值的文档。

db.products.aggregate([ 
    { "$group": { 
        "_id": "$price", 
        "docs": { "$push": "$$ROOT" } 
    }},
    { "$sort": { "_id": 1 } }, 
    { "$limit": 1 } 
])

这会产生如下结果:

{
    "_id" : 100,
    "docs" : [
        {
            "_id" : ObjectId("574a161b17569e552e35edb5"),
            "product" : "Milk",
            "barcode" : 12345,
            "price" : 100,
            "store" : "BestBuy"
        },
        {
            "_id" : ObjectId("574a161b17569e552e35edb6"),
            "product" : "Milk",
            "barcode" : 12345,
            "price" : 100,
            "store" : "WalMart"
        }
    ]
}
 类似资料:
  • 如何使用_id检索在我的收藏中创建的最新文档? 我试图通过以下方式在我的Web应用程序中实现分页: 正在检索我页面加载的最后一个文档的_id 在下一页中检索大于最后一个文档_id的文档(http://tldrify.com/dcj) 我采用这种方法的原因是,我试图利用存储数据中的自然顺序——文档中存储的id。 获取下一组帖子的示例: 我的猫鼬模式: 据我所知,Mongo的文件已经按照以下文件从最旧

  • 问题内容: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 是否有用于获取数据库中所有集合的命令?其他数据类型(哈希,列表,排序集)又如何呢? http://redis.io/topics/data-types 问题答案: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 不管您的密钥是哪种数据类

  • 给定一组正整数,其元素不必不同,我需要找到从给定集合的任何子集都不能得到的最小非负和。 例如:,我们可以得到作为,作为,作为,,作为,作为,但我们无法得到。 现在我们得到一个数组A,由N个正整数组成。它们是M个查询,每个查询由两个整数组成,分别描述i't查询:我们需要找到无法从数组元素{A[Li],A[Li 1],…,A[Ri-1],A[Ri]}中获得的和。 我知道用蛮力方法找到它要在O(2^n)

  • 我有用于数据库的Spring Boot App和MongoDB。 在数据库中,我有一个集合packageholiday,其中有一些元素,这是JSON: 我的目标是什么: 正如你们所见,我在集合中有这样的数组: 所以我的问题实际上是创建API,它将从集合中返回具有指定的元素。 例如 的API 例如,对于相同的 的API 我怎样才能做到这一点?这样可能吗?

  • 我需要找到产品的最低和最大价格,这样我就可以用它来设置我的价格过滤器的范围。我在catalog/model/layer/filter/price.php中使用了getMaxPriceInt()和getMinPriceInt()方法。但是返回的值基于'min_price'字段。 如何根据final_price找出集合中产品的最低和最高价格?也就是说,如果集合中有4个产品(我只登记需要的字段) get