【问题标题】:How to compare 2 properties that are in a mongo document?如何比较 mongo 文档中的 2 个属性?
【发布时间】:2015-11-10 05:51:10
【问题描述】:

我在 mongo 中有文档,它们具有 {number1: <some number>, number2: <some other number>} 的属性此查询是聚合管道的一部分。

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    如果您需要在聚合管道中执行此操作,请使用$redact

    { "$redact": {
        "$cond": {
            "if": {
                "$lt": [ "$number1", "$number2" ]
            },
            "then": "$$KEEP",
            "else": "$$PRUNE"
        }
    }}
    

    它允许在单个阶段进行逻辑比较和删除。如果您有比 2.6 更旧的 MongoDB,那么您可以 $project 逻辑结果和 $match 将它们过滤掉。

    { "$project": {
        "someField": 1,
        "test": { "$lt": [ "$number1", "$number2" ] }
    }},
    { "$match": { "test": true } }
    

    【讨论】:

    • 这太好了,谢谢。可以嵌套 if/else,还是可以在 if 条件下使用 $or 和 $and?
    • @CSharpAtl 视情况而定,如果您实际上是指“嵌套”,那么您当然可以嵌套。 $cond 是一个“三元”,所以通常另一个 $cond 作为“else”的参数。否则,它只是与$and$or 的逻辑包含。请参阅boolean operators。但这不是您问的问题如果您还有其他问题,那么ask another question。当您在这种情况下提出其他问题或完全不同的问题时,事情会变得非常不清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多