2017-01-11 4 views
0

В моей коллекции у меня есть массив объектов. Я хотел бы поделиться только подмножеством этих объектов, но я не могу понять, как это сделать?MongoDB, получить определенное поле в массиве объектов

Вот несколько вещей, которые я пытался:

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 
    } 
}; 
+0

Пробовали ли вы ' 'myArray.myNestedField': 1 '? – Veeram

+0

Это абсолютно правильно! Для меня это не имело смысла. –

ответ

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

я кратко объяснить все варианты у вас есть.

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

Ниже варианта работает только с positional operator($) в запросе предыдущего проекцию и проекты только первый элемент, соответствующий запрос.

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

Это не действительная операция проецирования.

'myArray.0.myNestedField': 1 

Подробнее здесь о том, как query & project документы

Смежные вопросы