Я хочу создать статистику о том, сколько новых документов хранится каждую минуту.MongoDB подсчитывает количество новых документов в минуту на основе _id
Поскольку поле _id со стандартным идентификатором объекта содержит уже временную метку создания документа, я думаю, что должно быть возможно как-то его использовать.
На Stackoverflow я нашел следующую карту уменьшить код, чтобы сделать это, когда есть выделенное поле для данных для создания
Map-Reduce count number of documents in each minute MongoDB
map = function() {
var created_at_minute = new Date(this.created_at.getFullYear(),
this.created_at.getMonth(),
this.created_at.getDate(),
this.created_at.getHours(),
this.created_at.getMinutes());
emit(created_at_minute, {count: 1});
}
reduce = function(key, values) {
var total = 0;
for(var i = 0; i < values.length; i++) { total += values[i].count; }
return {count: total};
}
Согласно документации Монго DB (http://docs.mongodb.org/manual/reference/object-id/) он должен можно получить временную метку из _id, вызвав ObjectId («507f191e810c19729de860ea»). getTimestamp().
Прямо сейчас я понятия не имею, возможно ли вообще использовать эту getTimestamp() внутри функции карты.
Есть ли у кого-нибудь идея, как это сделать или есть лучший способ?
Мне это нужно, чтобы быть осуществимыми в питона или PHP
Функция карта должна быть написана на JavaScript. Я не уверен, что вы имеете в виду «он должен быть реализован в python или php»? Если '_id' является ObjectId, то в документах' getTimestamp' должен работать нормально. Я не понимаю, почему вы этого не пробовали? – WiredPrairie
Сокращение карты написано в javaskiprt, я знаю, но это должно быть исполняемым через php или python ... Я пытаюсь сейчас сделать что-то, но я довольно новичок, чтобы свернуть карту через mongodb – Dukeatcoding