90 votes

Obtenir tous les documents d'une collection en utilisant Pymongo

Je veux écrire une fonction qui renvoie tous les documents contenus dans le fichier mycollection dans mongodb

from pymongo import MongoClient

if __name__ == '__main__':
    client = MongoClient("localhost", 27017, maxPoolSize=50)
    db=client.mydatabase
    collection=db['mycollection']
    cursor = collection.find({})
    for document in cursor:
        print(document)

Cependant, la fonction revient : Process finished with exit code 0

0 votes

Avez-vous essayé sans accolades dans la méthode de recherche ? essayez curseur = db.mycollection.find()

0 votes

Le même résultat : Processus terminé avec le code de sortie 0

0 votes

Ok, comment exécutez-vous ce script ? (Veuillez également ajuster l'indentation)

103voto

notionquest Points 15321

Voici l'exemple de code qui fonctionne bien lorsque vous l'exécutez à partir de l'invite de commande.

from pymongo import MongoClient

if __name__ == '__main__':
    client = MongoClient("localhost", 27017, maxPoolSize=50)
    db = client.localhost
    collection = db['chain']
    cursor = collection.find({})
    for document in cursor:
          print(document)

Veuillez vérifier le nom de la collection.

2 votes

C'est la même chose que ce que j'ai fait.

0 votes

J'ai collé le code ci-dessus pour confirmer qu'il n'y a pas de problème dans le code. Il s'agit d'un problème lié à l'environnement local. En outre, j'ai mentionné que cela fonctionne bien à partir de l'invite de commande.

0 votes

Je comprends. Finalement, ça marche. Le problème était dans le nom de la collection. Merci.

62voto

Robert Nagtegaal Points 479

Pymongo crée un curseur. Vous obtiendrez donc l'objet "sous" le curseur. Pour obtenir tous les objets en général, essayez :

list(db.collection.find({}))

Cela forcera le curseur à itérer sur chaque objet et à le placer dans une liste().

Amusez-vous bien...

12voto

Je pense que cela fonctionnera parfaitement dans votre programme.

cursor = db.mycollection # choosing the collection you need

for document in cursor.find():
    print (document)

3 votes

Merci. Résoudre mon problème

3 votes

Ici cursor = db.mycollection ne pas nommer la variable comme curseur, l'idéal serait de la nommer comme collection Pour ne pas confondre avec cursor.find(): devrait être collection.find(): qui renvoie un cursor qui peuvent être itérées pour obtenir les valeurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X