我正在为搜索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(条件)