Я новичок в Монго, и я видел, что он немного силен, мне нужно сделать сокращение или агрегирование, которое даст мне среднее, максимальное и минимальное значения в документе, например так:
{
_id: MongoId(""),
var: [integer with the variable id],
tim: timestamp in unix format,
val: [value can be int, float or string]
}
Я буду иметь дело со строками, используя отображение ошибок, когда пользователь выбирает переменную, в которой в качестве значений используются строки, но для двух других мне нужно получать среднее, максимальное и минимальное значения каждые 10 или около того документов, которые должны быть возвращены :
{
var: [varid],
avg: [average every 10],
tim: [average tim],
max: [max val in the 10 documents taken for this aggregation],
min: [min val in the 10...]
}
Пример данных:
{
"_id" : ObjectId("52cb898fds4bd6c24ae06a9e"),
"timestamp" : ISODate("2012-11-02T01:23:34.010Z")
"value" : 20
},
{
"_id" : ObjectId("52cb898bed4bd6c24ae34h56"),
"timestamp" : ISODate("2012-11-02T01:23:44.010Z")
"value" : 18
},
{
"_id" : ObjectId("52cb898bed4bd6c24ae06a9e"),
"timestamp" : ISODate("2012-11-02T01:23:54.010Z")
"value" : 25
}
...
Результат для текущих 3 документов:
{
"timestamp" : ISODate("2012-11-02T01:23:44.010Z")
"avr" : 21,
"min" : 18,
"max" : 25
}
Есть ли способ сделать такую вещь, или я должен продолжать использовать программу для вычисления этого вместо того, чтобы заставить Монго это сделать? дело в том, что я хотел бы сделать это, потому что у меня есть 10 тыс. документов в день для каждой переменной, а получение средних значений за 10 дней требует 100 тыс. документов, затем подсчитывая средние значения и все, что занимает слишком много оперативной памяти, я используя php, и он жалуется на это … (memory_limit должен быть ниже 512 МБ, поэтому … У меня нет другого выбора, кроме как уменьшить объем передаваемых данных …)
Любая помощь будет оценена по достоинству, и в качестве такового будет выбран лучший ответ, соответствующий моим потребностям.
Задача ещё не решена.
Других решений пока нет …