2017-02-21 5 views
0

Вот пример ситуации, я встречая (изобразите в каждой школе есть множество студентов, и есть только один результат):Подавляя полей вложенных документов внутри массива

db.students.find(_id: { $in: school.students }) 

{ 
    _id: 1, 
    zipcode: "63109", 
    students: [ 
      { name: "john", school: 102, age: 10 }, 
      { name: "jess", school: 102, age: 11 }, 
      { name: "jeff", school: 108, age: 15 } 
     ] 
} 

Как бы я сделать аналогичный запрос, который опускает «школьные» поля из массива студентов внутри студентов?

Например, как заставить результат выглядеть так?

{ 
    _id: 1, 
    zipcode: "63109", 
    students: [ 
      { name: "john", age: 10 }, 
      { name: "jess", age: 11 }, 
      { name: "jeff", age: 15 } 
     ] 
} 

ответ

2

Вы можете попробовать что-то вроде ниже. Используйте проекцию, чтобы сохранить поля, которые вам нравятся.

+0

Не звучать тупо, но вы проверили это? Я думал, что это невозможно, потому что ученики не являются объектом, а скорее массивом объектов. Возможно, что-то вроде «students.0.name», но как насчет ВСЕХ учеников? Это могут быть «студенты. $. Name»? –

+1

Да, да. Он также должен работать со встроенным массивом. Вот документы https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/#projection-on-embedded-documents-in-an-array – Veeram

+0

У меня была привилегия протестировать его и он работает чудесно! Спасибо! Я думал, что это не сработало, и мне нужно было использовать прогнозы с совокупной функцией MongoDB. –