2016-05-05 4 views
2

У меня есть коллекция mongoDB (метеор), которая возвращает коллекцию объектов с методом выборки. Каждый объект возвращения в массиве этой формыФильтр Meteor Collection

{quiz : {_id : 1, 
      title : 'The days of our lives'} 
    user : {name : 'Jamie'} 
    score : 34} 

Я хочу, чтобы отфильтровать результат запроса и группу по названию викторины, так что я могу сгруппировать все баллы по названию викторины. Любая помощь приветствуется

ответ

1

The вероятно, лучший способ сделать это, используя тест _id. Вы можете попасть в сценарий, где два названия одинаковы, но викторины - нет. Тогда ваши группы станут беспорядочными. Так просто использовать точечную нотацию и найти ответы на все вопросы, примененные к этой викторине, как так:

var answersByQuiz1 = Answers.find({ 
    'quiz._id': 1 
}).fetch(); 

Если вы хотите несколько групп ответов, вы можете сделать:

var answers = Answers.find({ 
    'quiz._id': { 
     $in: [1,2,3,4,5,6,7] // ids of concern 
    } 
}).fetch(); 

И группировать их на клиенте, используя для пример underscorejs:

_.groupBy(answers, function(answer){ return answer.quiz._id; }); 
0
var filter = Collectionname.find({'quiz.title': 'The days of our lives'}).fetch(); 
console.log(filter); 
+0

Хотя этот фрагмент кода может решить вопрос, [включая пояснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает им подтвердите качество своего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! –