Florian Bienefelt
Florian Bienefelt

Reputation: 1578

MongoDB, retrieve specific field in array of objects

In my collection I have an array of objects. I'd like to share only a subset of those objects, but I can't find out how to do this?

Here are a few things I tried:

db.collections.find({},
  { fields: {
    'myField': 1, // works
    'myArray': 1, // works
    'myArray.$': 1, // doesn't work
    'myArray.$.myNestedField': 1, // doesn't work
    'myArray.0.myNestedField': 1, // doesn't work
  }
};

Upvotes: 0

Views: 54

Answers (1)

s7vr
s7vr

Reputation: 75924

myArray.myNestedField':1 for projecting nested fields from the array.

I'll briefly explain all the variants you have.

'myField': 1 -- Projecting a field value
'myArray': 1 -- Projecting a array as a whole - (Can be scalar, embedded and sub document)

The below variants works only with positional operator($) in the query preceding the projections and projects only the first element matching the query.

'myArray.$': 1
'myArray.$.myNestedField': 1

This is not a valid projection operation.

'myArray.0.myNestedField': 1

More here on how to query & project documents

Upvotes: 2

Related Questions