I store in mongodb some documents that have the following structure:
{
"a":1,
"b":24.212,
"uup":"X243",
"fvp": [
  {
    "feature_id": 10,
    "value": 180.157,
    "units": "A"
  },
  {
    "feature_id": 83,
    "value": 180.042252,
    "units": "mP",
  },
  {
    "feature_id": 62,
    "value": 0.234,
    "units": ""   
  }
]
} 
and in general I may have some tens or even hundreds of elements inside array fvp. I want to perform a search as follows:
db.colX.find({"_id" : ObjectId("54b44b3bfeee5a13a43f34f0")});
but get just the elements in fvp whose feature_id is in a range of values. For example, I would like to get the following result:
{
    "a":1,
    "b":24.212,
    "uup":"X243",
    "fvp": [
      {
        "feature_id": 10,
        "value": 180.157,
        "units": "A"
      },
      {
        "feature_id": 62,
        "value": 0.234,
        "units": ""
      }
}
specifying that I want to get only the element of fvp with "feature_id":10 OR "feature_id":62 . Is this anyhow possible? It seems that this can be done when just a single feature_id is specified, using the keyword $elemMatch. Here is an example:
db.colX.find(
  {"_id" : ObjectId("54b44b3bfeee5a13a43f34f0")},
  {
    feature_value_pairs: 
      {$elemMatch: {feature_id: 10} }
  }
);
Question #1: This suppresses other fields of my document from being displayed (e.g., a, b, uup). Can this be avoided?
Things get more complicated when I want to specify that I want the retrieved document to have the elements with feature_id equal to 10 and 83 together. Here is what I tried:
db.colX.find(
  {"_id" : ObjectId("54b44b3bfeee5a13a43f34f0")},
  {
    feature_value_pairs: 
     {$elemMatch: {feature_id: { $in: [10, 83]}} }
  }
);
However this displays just the element with feature_id:10.
Question #2: How can I achieve the desired result in mongodb?
