How to find names of all collections using PyMongo and find all fields in chosen collection ? I have name of database and name of chosen collection. (Scenario : user input name of database, need to find all collections and show in dropdown list, when user click on one item need to find all fields in that collection)
To list all collections in Mongo shell, you can use the function getCollectionNames().
The find_One() method of pymongo is used to retrieve a single document based on your query, in case of no matches this method returns nothing and if you doesn't use any query it returns the first document of the collection.
To find the collections, you can use collection_names()
- https://pymongo.readthedocs.io/en/stable/api/pymongo/database.html#pymongo.database.Database.collection_names
Update:
The collection_names
is deprecated from 3.7
onwards and been replaced by list_collection_names()
- https://pymongo.readthedocs.io/en/stable/api/pymongo/database.html#pymongo.database.Database.list_collection_names
This is very simple. e.g.
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)
result -> {"database1":["collection1","collection2"...], "database2": [...], ...}, like:
{"test": ["score", "test4", "test5", "test6", "test3", "test7", "user", "test2", "test8"], "testdb": ["test5", "test8", "test2", "test9", "test3", "test4", "test6", "test"], "local": ["startup_log"], "stackoverflow": ["questions"]}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With