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)
Réponses
Trop de publicités?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"]}
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
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