MongoDB 聚合 - 如果提供其他不匹配,则匹配输入参数

标签 mongodb aggregation

我有一个 MongoDB 聚合查询,其中包含以下内容:

{ $match: { version: versionNumber }

'versionNumber' 是聚合的可选输入参数。如果未提供此版本号,则我不希望执行此匹配。

目前,如果没有提供 versionNumber,匹配仍然会发生,我得到一个空白的查询输出。

Mongo 有没有办法做到这一点?谢谢!

最佳答案

有一种方法可以做到这一点,是的,但它应该在应用程序代码中完成。在构建传递给查询的管道数组时,如果提供了必要的信息,则只包含 $match 阶段。

var pipeline=[]
if (versionNumber) pipeline.push( {$match: {version: versionNumber }} )
pipeline.push( ... Other Stages ... )

db.collection.aggregate(pipeline)

关于MongoDB 聚合 - 如果提供其他不匹配,则匹配输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63461684/

相关文章:

javascript - 类型错误 : Cannot read property 'db' of undefined

java - Spring WebFlux : block() method return null in Spring Data Reactive MongoDB

javascript - Mongoose - 双向引用

java - 如何使用 Java Spring Boot 更新 MongoDB 中的数组字段?

elasticsearch - Elasticsearch中的聚合的监听器

python - Pandas :过去n天的平均值

mysql - 如何在不使用group by的情况下聚合数据

node.js - 如何更新嵌套数组中的一个文档

mysql - 是否可以将 COUNT() 与 SELECT in HAVING 子句的单个结果进行比较?

elasticsearch - Elasticsearch筛选聚合结果(用于搜索和聚合)