Cómo consultar un elemento de una lista en pymongo.

pymongo me lanza un error al intentar consultar y elementos de las tags

 db.users.find({"pseudo":"alucaard"}).distinct("produit_up") Out[1]: [{u'abus': 0, u'avctype': u'image/jpeg', u'date': u'2012-09-15', u'description': u'le fameux portable solide', u'id': u'alucaard134766932677', u'namep': u'nokia 3310', u'nombre': 1, u'orientation': u'portrait', u'photo': ObjectId('5053cd4e3a5f3a0990da8a61'), u'prix': 1000, u'tags': [u'solide', u'le', u'fameux', u'portable'], u'vendu': False}] list(db.users.find({"solide":{"$in":{"document_up.tags"}}})) Traceback (most recent call last): File "C:\Python27\lib\site-packages\IPython\core\interactiveshell.py", line 2746, in run_code exec code_obj in self.user_global_ns, self.user_ns File "", line 1, in  list(db.users.find({"solide":{"$in":{"document_up.tags"}}})) File "C:\Python27\lib\site-packages\pymongo\cursor.py", line 778, in next if len(self.__data) or self._refresh(): File "C:\Python27\lib\site-packages\pymongo\cursor.py", line 729, in _refresh self.__uuid_subtype)) InvalidDocument: Cannot encode object: set(['document_up.tags']) 

NB: solo es un truco para los usuarios de pymongo, si sus usuarios tienen un tamaño de texto limitado, simplemente conviértalos utilizando un conjunto, y luego conviértalo en una lista: por ejemplo:

 phrase = "hi you, how are you, am i using this" 
  1. Primer paso: elimine la coma o los puntos para evitar búsquedas de expresiones regulares.
  2. segundo, utilice phrase.split() para dividir palabras.
  3. agregar esto a un set para evitar palabras duplicadas.
  4. convertir el conjunto en una list
  5. será una buena idea hacer un diccionario que contenga algunas palabras que se eliminarán de la lista, como “cómo”, “usted”, “yo”, … pero hará mucho cálculo.

Espero que esta idea ayude.

Su consulta es incorrecta. Intente algo más cercano a:

 list(db.users.find({"document_up.tags":{"$in":["solide"]}}))