2017-08-23 4 views
0

Je souhaite interroger une liste imbriquée dans MongoDB en utilisant PyMongo en Python. Le problème est avec la requête pour vérifier la valeur du paramètre de second niveau (liste interne).Interrogation de la liste imbriquée en python - Problèmes avec la syntaxe de la requête

La structure de la collection est comme ceci:

[ 
    { 
    "name": "rahul", 
    "values": [ 
       { 
        "time":"2017-08-08 05:01:11" 
        "a": 5.766666666666667, 
        "b" : 3, 
        "c" : 2 
       }, 
       { 
        "time":"2017-08-08 05:16:40" 
        "a": 5.766666666666667, 
        "b" : 3, 
        "c" : 2 
       } 
     ] 
    }, 
    { 
    "name": "shenoy", 
    "values": [ 
       { 
        "time":"2017-08-08 05:01:11" 
        "a": 1, 
        "b" : 6, 
        "c" : 8 
       }, 
       { 
        "time":"2017-08-08 05:16:40" 
        "a": 5, 
        "b" : 8, 
        "c" : 1 
       } 
     ] 
    } 

] 

Je veux que tous les documents ayant une valeur de "c" est égal à 1. Les solutions que je suis tombé étaient comme:

for data in db.collection_name.find({'values.c': 1}) 

Cependant, cela ne fonctionne pas. J'ai également essayé des solutions comme "values.$.c" : 1 et aussi. S'il vous plaît me suggérer une solution pour interroger ces données JSON.

Répondre

0

Utilisation $elemMatch:

collection.find_one({'values': {'$elemMatch': {'c': 1}}})