[英]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.