我正在为搜索mongodb文档构建mongoose聚合
我根据过滤器构建了一个用于搜索的聚合。用户可以搜索的内容是可选的,那么有没有办法使匹配成为可选的?例如,用户可以选择一个日期,如果他没有选择,我希望聚合函数不要使用匹配日期我正在为搜索mongodb文档构建mongoose聚合,mongodb,mongoose,mongodb-query,aggregation-framework,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,我根据过滤器构建了一个用于搜索的聚合。用户可以搜索的内容是可选的,那么有没有办法使匹配成为可选的?例如,用户可以选择一个日期,如果他没有选择,我希望聚合函数不要使用匹配日期 db.articles.aggregate( [ { $match : { date : userSelectedDate }, { else : elseSelection} } ] ); 如果未选择日期=>取消日期匹配并匹配其他日期我将尝试动态
db.articles.aggregate(
[ {
$match : { date : userSelectedDate }, { else : elseSelection}
} ]
);
如果未选择日期=>取消日期匹配并匹配其他日期我将尝试动态构建查询文档
var query = []
if (userSelectedDate){
query.push({ $match : { date : userSelectedDate }})
db.articles.aggregate(query)
我将尝试动态构建查询文档
var query = []
if (userSelectedDate){
query.push({ $match : { date : userSelectedDate }})
db.articles.aggregate(query)
解决方案在mongoose文档中使用:Aggregate#append(ops) 将新运算符追加到此聚合管道 有了骨料后
aggregate.append({ $project: { field: 1 }}, { $limit: 2 });
所以现在我可以在附加之前使用if(条件)
解决方案在mongoose文档中使用:聚合#附加(ops) 将新运算符追加到此聚合管道 有了骨料后
aggregate.append({ $project: { field: 1 }}, { $limit: 2 });
所以现在我可以在附加之前使用if(条件)