我有一个Mongodb模式,大致如下:
[
{
"name" : "name1",
"instances" : [
{
"value" : 1,
"date" : ISODate("2015-03-04T00:00:00.000Z")
},
{
"value" : 2,
"date" : ISODate("2015-04-01T00:00:00.000Z")
},
{
"value" : 2.5,
"date" : ISODate("2015-03-05T00:00:00.000Z")
},
...
]
},
{
"name" : "name2",
"instances" : [
...
]
}
]
其中每个元素的实例数量可能相当大.
我有时只想得到一个数据样本,也就是说,每三个实例,或者每十个实例...你明白了.
我可以通过获取所有实例并在服务器代码中过滤它们来实现这一目标,但我想知道是否有办法通过使用聚合查询来实现这一目标.
有什么 idea 吗?
Updated
假设数据 struct 是扁平的,如@SylvainLeroux建议的,即:
[
{"name": "name1", "value": 1, "date": ISODate("2015-03-04T00:00:00.000Z")},
{"name": "name2", "value": 5, "date": ISODate("2015-04-04T00:00:00.000Z")},
{"name": "name1", "value": 2, "date": ISODate("2015-04-01T00:00:00.000Z")},
{"name": "name1", "value": 2.5, "date": ISODate("2015-03-05T00:00:00.000Z")},
...
]
获得第n项(具体name
项)的任务会更容易吗?