关于mongodb的聚合问题,如何优化呢
初学mongodb的聚合,略生疏,关于下面这道题
题目:
查询founded_year为2004
含有5个和以上的funding_rounds,
funding_rounds里的raised_amount之和的平均值最小
问这个文档的name是啥
文档大体结构(已略去无关字段):
{
"_id" : ObjectId("52cdef7c4bab8bd675297d8a"),
"name" : "Wetpaint",
"founded_year" : 2005,
"funding_rounds" : [
{
"raised_amount" : 5250000
},
{
"raised_amount" : 9500000
},
{
"raised_amount" : 25000000
}
]
}
我的解答如下(已验证结果是正确的):
现想问:我的这个写法是否很冗余,有没有更优化的聚合写法呢?
因为初学,没接触太多聚合符,所以请求拓展
db.getCollection('companies').aggregate([
{
$match:{
'founded_year':{$eq:2004}
}
},
{
$project:{
'funding_rounds':'$funding_rounds',
'funding_rounds_size':{$size:'$funding_rounds'}
}
},
{
$match:{
'funding_rounds_size':{$gte:5}
}
},
{
$unwind:'$funding_rounds'
},
{
$group:{
_id:"$_id",
'num':{$avg:'$funding_rounds.raised_amount'}
}
},
{
$sort:{
'num':1
}
}
])
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也是初学一周这样,不知道还有不有更好的写法
源数据
sql
感觉这种查询方法会好点,虽然写的有点多,不过效率应该快点