有没有好的Kotlin协程异步访问Mongo的库?

问题描述 投票:0回答:2

我正在 JVM 中启动一个包含大量 IO 的新项目。在某些时候,我必须在 Mongo 数据库中保存一些内容。我的想法是对 Kotlin 协程使用非阻塞方法。

我知道 Mongo 有一个官方的反应流驱动程序,并且支持看起来不错。但在这种情况下,我需要在流和协程之间“创建桥梁”。我的问题是关于这一点:有谁知道更好或更简单的方法吗?

mongodb asynchronous kotlin nonblocking kotlin-coroutines
2个回答
3
投票

看看 KMongo 项目。它协程支持:

import org.litote.kmongo.reactivestreams.*  // KMongo reactivestreams extensions
import org.litote.kmongo.coroutine.* // KMongo coroutine extensions

data class Jedi(val name: String, val age: Int)

val client = KMongo.createClient().coroutine //use coroutine extension
val database = client.getDatabase("test") //normal java driver usage
val col = database.getCollection<Jedi>() //KMongo extension method

//async now
runBlocking {
    col.insertOne(Jedi("Luke Skywalker", 19))

    val yoda : Jedi? = col.findOne(Jedi::name eq "Yoda")

    (...)
}

0
投票

您可以使用 MongoDB Kotlin 驱动程序。它直接支持协程,可以在服务器端应用程序中使用。这是一个例子:

https://www.mongodb.com/developer/products/mongodb/getting-started-kotlin-driver/

© www.soinside.com 2019 - 2024. All rights reserved.