Spring Data MongoDB

Материал из Home Wiki
Перейти к навигации Перейти к поиску

Зависимости: build.gradle

    compile "org.mongodb:mongodb-driver-sync:4.4.2"
    testImplementation 'org.mongodb:mongodb-driver-core:4.4.2'
    testImplementation 'org.mongodb:mongodb-driver-legacy:4.4.2'
    testImplementation 'org.mongodb:mongodb-driver-sync:4.4.2'

Тест - пробуем изменить ttlMonitorSleepSecs (но не работает):

    fun checkTtl(): Unit = runBlocking {
        val mongoTxId = UUID.randomUUID().toString()
        transactionRepository.save(
            Transaction(
                id = mongoTxId,
                dateTime = Instant.now(),
            )
        )
        val adminDb = mongoTemplate.mongoDatabaseFactory.getMongoDatabase("admin")
        val cmdTtlMonOff = BsonDocument.parse("{setParameter: 1, ttlMonitorEnabled: false}")
        println(adminDb.runCommand(cmdTtlMonOff).toJson())
        // db.adminCommand({getParameter:1, ttlMonitorSleepSecs: 1});
        val cmdGet = BsonDocument.parse("{getParameter:1, ttlMonitorSleepSecs: 1}")
        println(adminDb.runCommand(cmdGet).toJson())
        // db.adminCommand({setParameter:1, ttlMonitorSleepSecs: 1})
        val cmd = BsonDocument.parse("{setParameter:1, ttlMonitorSleepSecs: 70}")
        println(adminDb.runCommand(cmd).toJson())
        println(adminDb.runCommand(cmdGet).toJson())
        val cmdTtlMonOn = BsonDocument.parse("{setParameter: 1, ttlMonitorEnabled: true}")
        println(adminDb.runCommand(cmdTtlMonOn).toJson())
        println(adminDb.runCommand(cmdGet).toJson())
        await()
            .atMost(65L, TimeUnit.SECONDS)
            .pollDelay(500L, TimeUnit.MILLISECONDS)
            .until {
                runBlocking {
                    !transactionRepository.existsById(mongoTxId)
                }
            }
        assertNull(transactionRepository.findById(mongoTxId))
    }