Jag har svarat på detta ett par gånger om att bara hämta underdokumenten från mongo-samlingen här , och här
Det finns helt enkelt inget sätt att göra detta just nu. Detta är beteendet för att filtrera inbäddade dokument på flera nivåer, normalt skulle det matchande filtret returnera hela dokumentet, inte delmängderna.
Det finns två utestående problem redan i mongo relaterade till denna positionella ($) operator i fälten för att returnera specificator och Möjlighet att använda ett underdokuments data vars innehåll användes för att tillfredsställa en fråga med $-operatorn . (Logga in för att rösta om du verkligen behövde funktionen)
Och ditt alternativa schema är inte heller användbart här.
så du måste lagra varje funktion i separata dokument som detta för att få det att fungera som du ville
funktion 1
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}
funktion 2
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}
och frågar
db.features.find({'_id':someobjectid})
returnerar endast den specifika funktionen