MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment faire une requête dans cette structure de document imbriquée (MongoDB) ?

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