J'ai répondu plusieurs fois à propos de la récupération des sous-documents seuls de la collection mongo ici , et ici
Il n'y a simplement aucun moyen de le faire actuellement. C'est le comportement du filtrage d'un document intégré à plusieurs niveaux, normalement le filtre correspondant renverrait le document entier, pas les sous-ensembles.
Il existe déjà deux problèmes en suspens dans mongo liés à cet opérateur positionnel ($) dans les champs pour renvoyer le spécificateur et Possibilité d'utiliser les données d'un sous-document dont le contenu a été utilisé pour satisfaire une requête à l'aide de l'opérateur $ . (Veuillez vous connecter pour voter si vous avez vraiment besoin de cette fonctionnalité)
Et votre schéma alternatif n'est pas non plus utile ici.
vous devez donc stocker chaque fonctionnalité dans un document séparé comme celui-ci pour le faire fonctionner comme vous le souhaitez
fonction 1
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}
fonction 2
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}
et interrogeant
db.features.find({'_id':someobjectid})
renverra uniquement la fonctionnalité spécifique