2017-09-06 2 views
0

je la structure du document suivant dans mon MongoDB:MongoDB trouver la requête avec des documents imbriqués

[{ 
    "_id": "59afce079af65f48de8fb609", 
    "some_fields": "...", 
    "members": [ 
    { 
     "some_fields": "...", 
     "device_id": "7FD45D19-F746-4293-A410-60B485E617F2", 
     "_id": "59afce079af65f48de8fb60a" 
    }, 
    { 
     "some_fields": "...", 
     "device_id": "7AC1635B-3E39-4F43-A4D4-4927FA072F89", 
     "_id": "59afd01cff27894e8237eb2d" 
    } 
    ] 
}] 

Comment puis-je obtenir documents which members contain object where device_id == "given_id" en utilisant la trouvaille de mangouste?

+0

Qu'avez-vous essayé? Avez-vous même lu [Query Embedded Documents] (https://docs.mongodb.com/manual/tutorial/query-embedded-documents/)? –

Répondre

0

Essayez pour cela:

Utilisation elemMatch:

db.collection.find({members: {$elemMatch: {device_id:'your ID'}}}) 
+1

Vous n'avez pas besoin de '$ elemMatch'. Simple ["dot notation"] (https://docs.mongodb.com/manual/core/document/#dot-notation) fera l'affaire. C'est ce genre de désinformation qui est vraiment dommageable. –

+0

@NeilLunn Avec l'elemMatch, il peut également comparer plus d'un élément. – Subburaj

+0

Vous avez seulement ** "need" ** ['$ elemMatch'] (https://docs.mongodb.com/manual/reference/operator/query/elemMatch /) pour ** plus d'une condition **. Ceci est seulement une ** seule condition **. Les gens qui pensent autrement sont un vrai problème. La documentation est en fait très claire lorsque vous le lisez. Vous avez les deux liens là-bas, alors je vous suggère de les lire vous-même. –