83 votes

Comment trouver les noms de toutes les collections en utilisant PyMongo ?

Comment trouver les noms de toutes les collections à l'aide de PyMongo et trouver tous les champs de la collection choisie ? J'ai le nom de la base de données et le nom de la collection choisie. (Scénario : nom d'entrée utilisateur de la base de données, besoin de trouver toutes les collections et de l'afficher dans la liste déroulante, lorsque l'utilisateur clique sur un élément, il doit trouver tous les champs de cette collection)

41voto

Little Roys Points 1771

C'est très simple. par exemple

 import pymongo
import json

if __name__ == '__main__':
    client = pymongo.MongoClient("localhost", 27017, maxPoolSize=50)
    d = dict((db, [collection for collection in client[db].collection_names()])
             for db in client.database_names())
    print json.dumps(d)

résultat -> {"database1":["collection1","collection2"...], "database2": [...], ...}, comme :

 {"test": ["score", "test4", "test5", "test6", "test3", "test7", "user", "test2", "test8"],
 "testdb": ["test5", "test8", "test2", "test9", "test3", "test4", "test6", "test"],
 "local": ["startup_log"],
 "stackoverflow": ["questions"]}

9voto

Rajiv Sharma Points 1786

J'ai toujours utilisé cette méthode pour obtenir tous les noms de collection de ma base de données MongoDB.

 import pymongo
db_connect = pymongo.MongoClient('192.168.4.202', 20020)
database_name = 'MY_DATABASE_NAME'
database = db_connect[database_name]
collection = database.collection_names(include_system_collections=False)
for collect in collection:
    print collect

8voto

Mallikarjun M Points 684

DeprecationWarning : collection_names est obsolète. Utilisez plutôt list_collection_names.

Modifié dans la version 3.7 : obsolète. Utilisez plutôt list_collection_names().

Un exemple pour lire le nom de la base de données à partir de l'entrée utilisateur, puis trouver les noms de collection de liste serait :

 import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

dbname = input("Enter database name: ")
mydb = myclient[dbname]

#list the collections
for coll in mydb.list_collection_names():
    print(coll)

Référence : Python MongoDB

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