У меня есть «статистика» коллекция так:Подсчитать итоговые документы в коллекции с помощью карты уменьшить?
{ "_id" : ObjectId("4d2407265ff08824e3000001"), "request_uri" : {"netloc":"localhost/8080", "path":"vi/sitelicense"}, "api_key" : "apikey", "request_method" : "POST" }
{ "_id" : ObjectId("4d2551b4ae9fa739640df821"), "request_uri" : {"netloc":"localhost/8080", "path":"vi/sitelicense"}, "api_key" : "apikey", "request_method" : "GET" }
{ "_id" : ObjectId("4d255b115ff08821c2000001"), "request_uri" : {"netloc":"localhost/8080", "path":"vi/sitelicense"}, "api_key" : "apikey", "request_method" : "POST" }
{ "_id" : ObjectId("4d25e8d55ff08814f8000001"), "request_uri" : {"netloc":"localhost/8080", "path":"vi/sitelicense"}, "api_key" : "apikey", "request_method" : "PUT" }
{ "_id" : ObjectId("4d2407265ff08824e3700001"), "request_uri" : {"netloc":"localhost/8080", "path":"vi/sitelicense"}, "api_key" : "apikey", "request_method" : "POST" }
Как я могу найти общее количество документов в моей «статистике» коллекция с использованием карты уменьшить операцию? Вот моя карта уменьшить операцию:
map_number_api_calls = function() {
emit(this._id, 1);
}
reduce_number_api_call = function(k, v) {
var i, sum = 0;
for (i in v) {
sum += v[i];
}
return sum;
}
Но выше карта-свертка операция не возвращает общее количество документов. Мне нужно общее количество документов для сбора, которое на самом деле 5. Любой пример?
это легко сделать с помощью карты/сокращения, но почему вы хотите использовать карту/сокращение, а не только db.collection.count()? –
Мне нужно выполнить некоторую другую совокупность данных из той же коллекции, поэтому я должен сделать это с помощью операции map/reduce. Возможно ли запланировать мою работу по сокращению карты? Как вы можете видеть, у моей коллекции есть некоторые данные о вызовах api в ней, и я должен найти аналитику и обновить ее до какой-либо другой коллекции? –