Je dois faire quelques actions sur toutes les collections. Je les liste avec un code simple comme celui-ci:

for collection_name in db.list_collection_names():
   # do something that work only on collection that are not a view

Je reçois toutes les collections, y compris les vues. Ce qui ne fonctionne pas avec ce que je veux. Donc :
Comment puis-je vérifier qu'une collection est une vue ?
Comment filtrer les vues lors de l'obtention de la liste des collections ?

1
Julien DevOps 14 sept. 2020 à 15:55

1 réponse

Meilleure réponse

Vous pouvez utiliser list_collections() et filtrer les éléments qui ne sont pas des collections. La création d'une vue ajoute une collection system.views, l'exemple ci-dessous la filtre également.

from pymongo import MongoClient

db = MongoClient()['mydatabase']

for collection_name in db.list_collections(filter={'type': 'collection', 'name': {'$ne': 'system.views'}}):
    print(collection_name)
0
Belly Buster 14 sept. 2020 à 19:13