Как я могу проверить, что коллекция является представлением?

#pymongo

#pymongo

Вопрос:

Мне нужно выполнить некоторые действия со всеми коллекциями. Я перечисляю их с помощью такого простого кода:

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

Я получаю все коллекции, включая представления. Который не работает с тем, что я хочу. Итак:
Как я могу проверить, что коллекция является представлением?
Как я могу отфильтровать представления при получении списка коллекций?

Ответ №1:

Вы можете использовать list_collections() и отфильтровывать элементы, которые не являются коллекциями. Создание представления добавляет system.views коллекцию, приведенный ниже пример также отфильтровывает это.

 from pymongo import MongoClient

db = MongoClient()['mydatabase']

for collection_name in db.list_collections(filter={'type': 'collection', 'name': {'$ne': 'system.views'}}):
    print(collection_name)
  

Комментарии:

1. Спасибо за ваш ответ! Фильтр работает, и при использовании list_collections у меня также есть доступ к collection[«type»], чтобы узнать, действительно ли это коллекция или представление.