first: me -> MongoNoob, и я знаю, что это уже было задано одним или другим способом, но до сих пор я не нашел ничего конкретного. Скажем, у меня есть два Moongoose модели, описанные, как это:Несколько запросов мангуста() запросов к MongoDB
var pollSchema = mongoose.Schema({
title: String,
choices: [{
content: String
}]
});
var choiceSchema = mongoose.Schema({
poll_id: mongoose.Schema.ObjectId,
option: Number
});
пользовательский интерфейс показывает опрос, и когда пользователь выбирает выбор, написано в choiceSchema
модели. Теперь я хотел бы создать «статистику», указав, сколько пользователей выбрали вариант 1, вариант 2, вариант 3, ... Я мог бы просто получить все варианты опроса с помощью find
и сгенерировать статистику в код сервера, но если у меня будет миллион пользовательских вариантов, мне придется иметь дело с массивом того же размера. Это неправильно. я, однако, может генерировать запрос и использовать count()
метод:
var query = Choice.find({poll_id: someId}),
query.where('option', 1);
var resultForOption1;
query.count(function(err, count)) {
resultForOption1 = count;
});
Как бы сделать это для нескольких вариантов и «присоединиться» (ха-ха) результаты в массив? Поскольку это все асинхронно, я бы вложил вызовы, но это не вариант для переменного количества запросов.
Пропустить лес для деревьев :-)? Может кто-нибудь указать мне в правильном направлении?
BR, Daniel
Я бы рекомендовал вам создать документ, который записывает результаты совокупности и сохраняет значения, а не пытается подсчитать их в реальном времени. – WiredPrairie