Как добавить wiredTiger в pymongo на уровне коллекции?

Я пытаюсь включить сжатие данных в MongoDB 3.0 с помощью механизма wiredTiger. Сжатие отлично работает на уровне сервера, где я могу предоставить глобальный алгоритм сжатия для всех коллекций в файле конфигурации сервера mongo следующим образом:

storage:
  engine: wiredTiger
  wiredTiger:
    collectionConfig:
      blockCompressor: zlib

Я хочу включить это сжатие на уровне коллекции, что можно сделать с помощью приведенного ниже кода в оболочке mongodb:

db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );

Как я могу сделать это с помощью драйвера pymongo?

from pymongo import MongoClient
client = MongoClient("localhost:27017")
db = client.mydb

person Rahul    schedule 18.12.2015    source источник
comment
ты пробовал db.create_collection('test', storageEngine={'configString':'block_compressor=zlib'}) ?   -  person Pynchia    schedule 18.12.2015
comment
Ага. Это работает, как я упомянул в вопросе. Я хочу сделать то же самое, используя pymongo, а не оболочку mongo.   -  person Rahul    schedule 18.12.2015
comment
код, который я написал, — это код Python для драйвера pymongo. См. здесь   -  person Pynchia    schedule 18.12.2015
comment
Спасибо, это сработало. Не видел метод create_collection раньше. Извините за путаницу. db.create_collection('test', storageEngine={'wiredTiger':{'configString':'block_compressor=zlib'}})   -  person Rahul    schedule 18.12.2015
comment
да, это выглядело немного странно как параметр. И я тоже написал часть, извините. Я добавил это как ответ, пожалуйста, примите его. Спасибо :)   -  person Pynchia    schedule 18.12.2015


Ответы (1)


Учитывая, что он работает через оболочку Mongo, передайте те же параметры через pymongo:

db.create_collection('test',
                     storageEngine={'wiredTiger':{'configString':'block_compressor=zlib'}})

из официальных документов мы видеть, что

create_collection(имя, codec_options=Нет, read_preference=Нет, write_concern=Нет, read_concern=Нет, **kwargs)

...

**kwargs (необязательно): дополнительные аргументы ключевого слова будут переданы в качестве опций для команды создания коллекции.

person Pynchia    schedule 18.12.2015
comment
как вы проверяете, какой механизм хранения используется через pymongo? - person vgoklani; 30.10.2017
comment
@vgoklani, вы можете проверить это непосредственно в оболочке монго, используя db.test.stats(), он должен показать вывод wiredTiger. официальные документы - person Rendrum; 08.02.2018