2012-04-25 22 views
5

que tienen Documento en MongoDB como esto:Pymongo Query with Dictionary in Dictionary?

{"ONE": {"TWO": {"THREE":"5"}}} 

que desea consultar mongodb utilizando el Pymongo find API, pero que no está funcionando:

for value in dbaccess.find({"ONE":{"TWO":{"THREE":{"$gt":"0"}}}}): 
    print value 

Nada se está impreso con el código de seguridad.

Respuesta

9

dos cosas:

  1. Si usted quiere tratar la 5 en el documento como un entero, no encerrarlo entre comillas dobles.
  2. Uso notación de puntos para la consulta de documentos anidados:

    dbaccess.find("ONE.TWO.THREE": {"$gt": 0})

+0

Excelente !!! Muchas gracias. Otra Q .... Si quiero tener la suma de todos los valores ... ¿tenemos una forma de obtenerlo? por ejemplo ... si tengo varios documentos de este tipo y mi objetivo es obtener la suma de todos los valores de ONE.TWO.THREE ... ¿es posible obtenerlo de la API de pymongo? puede encontrar o cualquier otra ayuda me en el mismo? – Gana

+0

Vea el método de grupo de una colección como se explica aquí [aquí] (http://api.mongodb.org/python/current/api/pymongo/collection.html?highlight=group#pymongo.collection.Collection.group). – JohnnyHK

+0

Gracias una vez más. Solo una más Q ... :-) Tengo una situación extraña ... sugirió consultarla como "ONE.TWO.THREE", pero en algunos documentos "TWO" puede ser cualquier otra cosa :-(... Intenté use reqx y también dando * en lugar de DOS pero no funcionó :-( – Gana