根据多个字段获取mongo文档

时间:2018-05-09 11:04:59

标签: mongodb mongodb-query

在集合中给出以下形式的mongo文档:

{
  "_id":"ObjectId",
  "value":{
    "id": 1,
     "payment": [
       {
        "status": {
           "id": "1.1",
           "value": "Paid"
         }
      },
      {
       "status": {
           "id": "1.2",
           "value": "Scheduled"
        }
      },
      {
      "status": {
          "id": "1.3",
          "value": "Recorded"
       }
      }
    ]
  }
}

ids = [1,2,3,4]

如何获取ididspayments.status.value中至少有一个等于Scheduled州的所有文件?

我使用以下查询,但它返回了0条记录,

db.collectionName.find({$and:[{"value.id":{$in:ids}},{"value.payment.status.value":"Scheduled"}]})`

2 个答案:

答案 0 :(得分:1)

您可以指定集合的​​名称
所以不要这样:

db.collection.find({
    $and:
    [
        {"value.id": {$in:ids}},
        {"value.payment.status.value":"Scheduled"}
    ]
})

你可以写:

db.payments.find({
    $and:
    [
        {"value.id":{$in:ids}},
        {"value.payment.status.value":"Scheduled"}
    ]
})

答案 1 :(得分:0)

db.collection.find({
    'value.payment': {
        $elemMatch: {
            'status.value': 'Scheduled'
        }
    },
    'value.id': {
        $in: [1, 2, 3, 4]
    }
}, {
    'value.id': 1,
    'value.payment.$.status': 1
})