猫鼬返回过滤结果

时间:2020-12-20 15:53:54

标签: javascript node.js mongoose

我正在使用 mongo db 来存储一些数据。我的模型看起来像这样:

const ItemSchema = mongoose.Schema({
  name: {
    type: String,
  },
  price: {
    type: Number,
  },})

假设我有多个名称为“Test”且价格不同的项目和一个名称为“Test2”的项目

[{name:"Test", price: 20},{name:"Test", price: 10},{name:"Test", price: 5},{name:"Test2", price: 50}]

如何从数据库中获取返回每个商品名称的名称和最低价格的结果。

我唯一想到的就是做这样的事情

Item.find((err,res)=>{
 //Loop through items with forEach or map
 //res.map((item)=> ...
})

有没有更好的方法来做到这一点?

3 个答案:

答案 0 :(得分:0)

试试这个 -

Item.aggregate(
    [
        {
            $group:
                {
                    _id: "$name",
                    lowestPrice: { $min: "$price" }
                }
        }
    ]
)

min aggregator

答案 1 :(得分:0)

你可以试试这个

Item.find((err,res)=>{
 //response
}).sort({'price': -1});

答案 2 :(得分:-1)

试试这个:

db.getCollection('test').aggregate( 
[{ 
    $group : { 
        _id : "$name",
        price:{$min:"$price"} 
    }
}])