繁体   English   中英

使用 Mongo 聚合基于字段获取不同的值

[英]Using Mongo Aggregation to Get Distinct Values Based on Field

所以我有一个名为 Cars 的集合,其中包含一些相同的字段,但我希望能够仅获取基于该字段的文档之一。

[
  {
    _id:'12345',
    model:'Honda'
  },
  {
    _id:'12346',
    model:'Honda'
  },
  {
    _id:'12347',
    model:'Honda'
  },
  {
    _id:'12348',
    model:'Toyota'
  },
  {
    _id:'12349',
    model:'Volkswagen'
  },
  {
    _id:'12349',
    model:'Volkswagen'
  },
]

所以在这里,我希望能够获得基于 model 字段的不同文档。 我只想要每个 model 字段的一个文档。

首先,您要更新 mongoose v3 或更高版本

解决方案是使用不同的 function

Cars.find().distinct('model', function(error, models) {});

我希望它会帮助你:)

使用$first$group阶段选择一个文档。 然后使用$unwind$replaceRoot进行一些争论以检索文档。

db.collection.aggregate([
  {
    $group: {
      _id: "$model",
      doc: {
        $first: "$$ROOT"
      }
    }
  },
  {
    "$unwind": "$doc"
  },
  {
    "$replaceRoot": {
      "newRoot": "$doc"
    }
  }
])

这是Mongo Playground供您参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM