Kilka razy odpowiedziałem na te pytania dotyczące pobierania samych poddokumentów z kolekcji mongo tutaj i tutaj
Po prostu nie ma obecnie możliwości, aby to zrobić. Jest to zachowanie filtrowania wielopoziomowego dokumentu osadzonego, zwykle pasujący filtr zwróci cały dokument, a nie podzbiory.
Istnieją już dwa nierozwiązane problemy w mongo związane z tym operatorem pozycyjnym ($) w polach do zwrócenia specyfikatora oraz Możliwość wykorzystania danych poddokumentu, którego zawartość została użyta do spełnienia zapytania za pomocą operatora $ . (Zaloguj się, aby zagłosować, jeśli naprawdę potrzebujesz tej funkcji)
Twój alternatywny schemat również nie jest tutaj przydatny.
więc musisz przechowywać każdą funkcję w oddzielnym dokumencie, tak aby działała tak, jak chcesz
funkcja 1
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}
funkcja 2
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}
i zapytania
db.features.find({'_id':someobjectid})
zwróci tylko konkretną funkcję