用户在我的网站上分享帖子,每个帖子都有一个城市和类别以及投票选项。我在顶部帮助用户上有一个菜单来过滤城市,类别,最高投票和最新的帖子。我想做的是:
我正在使用Meteor&最后做这个意大利面条:
if ( Session.get('topPosts') ){
if(Session.get("selectedCity") && Session.get("selectedCategory")){
if (Session.get("selectedCity") === Cities[0] && Session.get("selectedCategory") === Categories[0]){
return Posts.find({}, {sort: {score: -1}});
}
else if (Session.get("selectedCity") === Cities[0]){
return Posts.find({ category: Session.get("selectedCategory") }, {sort: {score: -1}});
}
else if (Session.get("selectedCategory") === Categories[0]){
return Posts.find({ city: Session.get("selectedCity") }, {sort: {score: -1}});
}
return Posts.find({ city: Session.get("selectedCity"), category: Session.get("selectedCategory") }, {sort: {score: -1}});
}
..
我是mongodb的新手。我不知道我是通过简单查询还是在多个查询之间进行组合来实现这一目标。
答案 0 :(得分:1)
您可以组合一组搜索和排序参数,并在最后应用它们,而不是对每种搜索可能性进行不同的查询。
var selector = {};
var sort = {};
if (Session.get('selectedCity') selector.city = Session.get('selectedCity');
if (Session.get('selectedCategory') selector.category = Session.get('selectedCategory');
if (Session.get('topPosts') sort = {sort: {score: -1}};
return Posts.find(selector, sort);
我将让您了解如何选择特殊的城市选择。