Как создать ограниченную коллекцию с помощью Spring Data? - MongoDB - PullRequest
2 голосов
/ 26 октября 2011

Я работаю над простым проектом.Я использую SpringData и MongoDB.

Все идеально, создавая нормальные коллекции, но теперь я должен зарегистрировать информацию, я имею в виду функциональность регистрации.

Итак, я прочитал это в документации mongo:

Ограниченные коллекции обеспечивают высокопроизводительные средства для хранения документов регистрации в базе данных.Вставка объектов в неиндексированную ограниченную коллекцию будет близка к скорости записи в файловую систему.Кроме того, благодаря встроенному механизму FIFO вы не рискуете использовать избыточное дисковое пространство для ведения журнала.

Я думал, что это здорово!это то, что мне нужно, но у меня есть сомнения.Можно ли создавать такие коллекции с помощью SpringData ???Я не смог найти ничего в документации SpringData.

Кто-то что-то знает об этом?

Спасибо

Ответы [ 3 ]

5 голосов
/ 26 октября 2011

Существует метод createCollection(…), принимающий аргумент CollectionOptions, в котором вы можете указать коллекцию, которая будет ограничена:

// The 'true' is setting it to capped
CollectionOptions options = new CollectionOptions(null, 50, true);
mongoOperations.createCollection("myCollection", options);

Может быть хорошей идеей, чтобы эти опции были доступны для аннотации @Documentчтобы автоматически позаботиться о них при создании контекста отображения, но мы, как правило, получаем отзывы людей, желающих вручную выполнить эти операции настройки коллекции и индексирования без излишнего автоматического поведения.Не стесняйтесь открывать JIRA на тот случай, если вы хотите, чтобы эта поддержка все же поддерживалась.

0 голосов
/ 27 февраля 2019

Использование CollectionOptions options = new CollectionOptions(null, 5000, true) устарело.

Вместо этого используйте CollectionOptions options = CollectionOptions.empty().capped().size(5242880).maxDocuments(5000). Не забудьте указать размер .

Здесь все объяснено в документации: https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#tailable-cursors

0 голосов
/ 07 января 2018

Если у вас есть коллекция, созданная из данных Spring (например: reservation), вы можете легко преобразовать ее в ограниченную, просто так:

db.runCommand({ convertToCapped: 'reservation', size: 9128 })

прочитайте руководство mongodb: https://docs.mongodb.com/manual/reference/command/convertToCapped/

ps: @Tailable аннотация очень сексуальная, она может помочь вам отслеживать обновления для этой коллекции и реагировать на ее изменения, используя принципы реактивного программирования

...