【问题标题】:MongoDB: find value in Array with multiple criteriaMongoDB:在具有多个条件的数组中查找值
【发布时间】:2019-12-03 12:52:23
【问题描述】:

我正在尝试根据价格范围过滤文档,

我有以下文档结构示例

{
    "name": "test 1",
    "priceObject" : [
        {
            "price" : {
                "value" : 1000
            }
        },
        {
            "price" : {
                "value" : 500
            }
        },
        {
            "price" : {
                "value" : 333
            }
        }
    ]
}

我使用聚合来匹配至少有一个价格必须大于 500 且小于 1000

的文档
{
    "$match": {
        "priceObject.price.value": {
            "$gt": 500,
            "$lt": 1000
        }
    }
}

它返回“test 1”文档,虽然它不应该返回,因为

  1. 500不小于1000大于500
  2. 1000不小于1000大于500
  3. 333不小于1000大于500

我该怎么做?

谢谢

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

    如果您指定多个条件来查询一个数组,那么您必须使用$elemMatch 查询运算符

    db.collection.aggregate([
      { "$match": {
        "priceObject": {
          "$elemMatch": {
            "price.value": {
              "$gt": 500,
              "$lt": 1000
            }
          }
        }
      }}
    ])
    

    【讨论】:

      猜你喜欢
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多