diff --git a/key-value/key-value-aio/src/key_value/aio/stores/mongodb/store.py b/key-value/key-value-aio/src/key_value/aio/stores/mongodb/store.py index a98cfa5a..3cfde94a 100644 --- a/key-value/key-value-aio/src/key_value/aio/stores/mongodb/store.py +++ b/key-value/key-value-aio/src/key_value/aio/stores/mongodb/store.py @@ -174,8 +174,12 @@ async def _setup_collection(self, *, collection: str) -> None: new_collection: AsyncCollection[dict[str, Any]] = await self._db.create_collection(name=collection) + # Index for efficient key lookups _ = await new_collection.create_index(keys="key") + # TTL index for automatic expiration of entries when expires_at is reached + _ = await new_collection.create_index(keys="expires_at", expireAfterSeconds=0) + self._collections_by_name[collection] = new_collection @override diff --git a/key-value/key-value-sync/src/key_value/sync/code_gen/stores/mongodb/store.py b/key-value/key-value-sync/src/key_value/sync/code_gen/stores/mongodb/store.py index b82befb8..fafe9bf2 100644 --- a/key-value/key-value-sync/src/key_value/sync/code_gen/stores/mongodb/store.py +++ b/key-value/key-value-sync/src/key_value/sync/code_gen/stores/mongodb/store.py @@ -181,8 +181,12 @@ def _setup_collection(self, *, collection: str) -> None: new_collection: Collection[dict[str, Any]] = self._db.create_collection(name=collection) + # Index for efficient key lookups _ = new_collection.create_index(keys="key") + # TTL index for automatic expiration of entries when expires_at is reached + _ = new_collection.create_index(keys="expires_at", expireAfterSeconds=0) + self._collections_by_name[collection] = new_collection @override