please help me this case.
I have a document:
Example:
{
  "id":1,
  "rules": [
    {
      "trigger": {
        "criteria": [
          {
            "type": "A"
          }
        ]
      },
      "benefit": "iphone"
    },
    {
      "trigger": {
        "criteria": [
          {
            "type": "A"
          }
        ]
      },
      "benefit": "ipad"
    },
    {
      "trigger": {
        "criteria": [
          {
            "type": "B"
          }
        ]
      },
      "benefit": "ipad"
    }
  ]
}
My expected result is to get benefit iphone and ipad from this document.
[
  {
    "benefit": "iphone"
  },
  {
    "benefit": "ipad"
  }
]
So I have tried this query:
db.collection.find({"id":"1"},{"rules":{"$elemMatch":{"trigger.criteria.type":"A"}}}})
I know that $elementMatch just return first match, so changed to aggregate refer to this LINK
db.collection.aggregate([
    {$match: {'id': '1'}},
    {$project: {
        rules: {$filter: {
            input: '$rules',
            as: 'rule',
            cond: {$eq: ['$$rule.trigger.criteria.type', 'A']}
        }},
        _id: 0
    }}
])
I just receive this.
{ "_id" : ObjectId("1"), "rules" : [ ] }
Please correct me for this query. Thanks a lot
 
    