从mongodb中的数组获取最大值

时间:2018-10-05 07:49:27

标签: node.js mongodb aggregation-framework

假设我们的收藏夹中包含以下文档:

{
  name: 'Product1',
  prices: [
    { shop: 'shop1', price: 1 },
    { shop: 'shop2', price: 2 }
  ]
},
{
  name: 'Product2',
  prices: [
    { shop: 'shop3', price: 5 },
    { shop: 'shop4', price: 3 }
  ]
}

我需要使用mongodb从这些文档中获得以下结果:

{
  name: 'Product1',
  bestPrice: { shop: 'shop1', price: 1 }
},
{
  name: 'Product2',
  bestPrice: { shop: 'shop4', price: 3 }
}

换句话说,我想获得按价格字段的值排序的最低价格的文档。我如何使用mongodb聚合框架来做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下汇总

db.collection.aggregate([
  { "$project": {
    "name": 1,
    "bestPrice": {
      "$arrayElemAt": [
        "$prices",
        {
          "$indexOfArray": [
            "$prices.price",
            { "$min": "$prices.price" }
          ]
        }
      ]
    }
  }}
])