我正在使用 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)=> ...
})
有没有更好的方法来做到这一点?
答案 0 :(得分:0)
试试这个 -
Item.aggregate(
[
{
$group:
{
_id: "$name",
lowestPrice: { $min: "$price" }
}
}
]
)
答案 1 :(得分:0)
你可以试试这个
Item.find((err,res)=>{
//response
}).sort({'price': -1});
答案 2 :(得分:-1)
试试这个:
db.getCollection('test').aggregate(
[{
$group : {
_id : "$name",
price:{$min:"$price"}
}
}])