怎么在MongoDB中查询指定id的前十条数据中最大值,最小值,这十条数据和,以及该id在表中总共有多少条数据?
没太看明白你的问题。你能写个t-sql描述下么?
SELECT (SUM(t.r)-MAX(t.r)-MIN(t.r))/8 avg,(SELECT COUNT(*) from a WHERE id="1234")count
FROM(SELECT r from a WHERE id="1234" ORDER BY time ASC limit 10)t
表a中我按照id查询,根据时间排序要前10条数据去掉最大值,最小值剩下8个求平均值,额外还要该id在表中一共多少条数据
db.reshis_2016.find(
{d:"BATT40000001"}
).sort({t:1}).limit(10)
我在mongodb中按时间排序要前10个数据,但是不能同一条语句求最大值,最小值,sum??
@缘猿~: 你要一个语句写出来?如果一个语句写的话需要做遍历。分两个可否?
两个语句我会写,主要是这样写如果数据很多,访问数据库的次数也多,性能会变低的,如果是一条可以降低访问次数
@缘猿~: count那个不说了,单独写。
另一个
db.a.aggregate([{{$match:{id:1234}}, {$sort:{time:1}}, {$limit:10}, $group:{
sum:{$sum:"$r"},
avg:{$avg:"$r"},
count:{$sum:1}
}}])
手敲的,可能有问题,自己对着改下吧。
@Daniel Cai: db.a.aggregate(
{$match:{id:"1234"}},
{$sort:{"time":-1}},
{$limit:10},
{$group:{_id:"$id",sum:{$sum:"$r"},max:{$max:"$r"},min:{$min:"$r"}}}
)
分着写我也是这样想的,O(∩_∩)O哈哈~
不过要是合着就更好了!实在不能和那就分着吧, O(∩_∩)O谢谢
之前在MongoDB萌阔论坛上看到过关于MongoDB查询最大值的相关讨论,你可以去看看,希望能帮助到你。
萌阔论坛:http://forum.foxera.com/mongodb/topic/596/請問一個找出最大值的語句?un=Jesse