У меня есть схема 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" : [
...
]
}
]
где количество экземпляров для каждого элемента может быть довольно большим.
Я иногда хочу получить только образец данных, т.е. получить каждый третий экземпляр или каждый 10-й экземпляр... вы получите изображение.
Я могу достичь этой цели, получив все экземпляры и фильтруя их в своем коде сервера, но мне было интересно, есть ли способ сделать это, используя некоторый запрос агрегирования.
Любые идеи?
Обновление
Предполагая, что структура данных была плоской, как предложено ниже @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
)?