renyi
renyi

Reputation: 1

MongoDB - How to get specified values of an array in a document

Here is the document

{
  '_id': ObjectId('61a4262a53ddaa8b93374613'),
  'userid': 'renyi',
  'data1': [{'a': 1}, 1, 2, 3],
  'data2': [{'c': 1}, {'b': 2}, {'c': 3}, {'c': 2}],
  'data': {'0': {'a': 1}}
}

With this

coll.find_one({'userid':'renyi','data2.c':1},{'_id':0,"data2.$":1})

I can get

{'data2': [{'c': 1}]}

But how to get

{'data2': [{'c': 1},{'c': 2}]}

Upvotes: 0

Views: 71

Answers (1)

Yong Shun
Yong Shun

Reputation: 51125

You can use $filter to filter the element within the array in projection.

db.collection.find({
  "userid": "renyi",
  "data2.c": {
    $in: [
      1,
      2
    ]
  }
},
{
  "_id": 0,
  "data2": {
    $filter: {
      input: "$data2",
      cond: {
        $in: [
          "$$this.c",
          [
            1,
            2
          ]
        ]
      }
    }
  }
})

Sample Mongo Playground

Upvotes: 1

Related Questions