我不熟悉MongoDB和Scala语言
我正在使用scala语言在本地连接mongodb
我正在使用下面的依赖项
// https://mvnrepository.com/artifact/org.mongodb.scala/mongo-scala-driver
libraryDependencies=“org.mongodb.scala”%%“mongo scala驱动程序”%%“4.2.3”
我试过的
object Demo extends App {
val mongoClient: MongoClient = MongoClient("mongodb://127.0.0.1:27017/")
val database: MongoDatabase = mongoClient.getDatabase("DemoDB")
println(database)
val collection: MongoCollection[Document] =database.getCollection("demodata");
val observable = collection.find();
}
上面的代码以下面的格式返回数据
FindObservable(com.mongodb.reactivestreams.client.internal.FindPublisherImpl@6253c26)
我也试过了
observable.subscribe ( new Observer[Document] {
override def onNext(result: Document): Unit = println(result.toJson())
override def onError(e: Throwable): Unit = println("Failed" + e.getMessage)
override def onComplete(): Unit = println("Completed")
})
我还尝试了printResult()
和printHeaderResult()
方法,但都不起作用
请帮忙,谢谢
我找到了这个链接
它适用于printResult()和PrintHeaderResult()方法
使用mongo Scala驱动程序从Scala中的Mongodb打印查询结果
Mongo Scala驱动程序以非阻塞方式工作,返回需要被Subsribed才能使用已发布数据的可观测数据
。
当你订阅可观察的
时,
object Demo extends App {
val mongoClient: MongoClient = MongoClient("mongodb://127.0.0.1:27017/")
val database: MongoDatabase = mongoClient.getDatabase("DemoDB")
println(database)
val collection: MongoCollection[Document] = database.getCollection("demodata")
val observable = collection.find()
observable.subscribe ( new Observer[Document] {
override def onNext(result: Document): Unit = println(result.toJson())
override def onError(e: Throwable): Unit = println("Failed" + e.getMessage)
override def onComplete(): Unit = println("Completed")
})
}
你的代码并不等待可观察的
真正发布任何内容,而是在订阅后立即完成。因此你什么也得不到。
你可以添加一个类似的线程。sleep(5000)
在最后阻塞并给obeservable
一些时间(希望完成并)发布数据。
或者,您可以添加val结果Seq=observable.collect
来阻止和收集单个序列中的所有发布数据。
本文向大家介绍Scala与Python | 哪种编程语言更好,包括了Scala与Python | 哪种编程语言更好的使用技巧和注意事项,需要的朋友参考一下 Scala是Martin Odersky在2004年开发的通用编程语言。 Scala和Python都是通用编程,在支持面向对象编程的数据科学中使用。 由van Rossum于1991年开发的Python是解释型高级通用编程语言。 由Martin
我想创建一个独立的scala代码,使用自定义设置在MongoDB网站上使用该代码从MongoDB读取。 当我运行SBT包时,我会遇到一些错误。我猜这与SparkSession的错误创作方法有关。你能给我一个提示来修理它吗? 我的内容 Firstapp.scala代码 以及运行后的错误 编辑1: 我尝试了这个解决方案,但没有正确编译。内容同上。我改变了转换为: 汇编结果如下: 编辑2: 我添加了to
Scala 循环 Scala 语言中默认是没有 break 语句,但是你在 Scala 2.8 版本后可以使用另外一种方式来实现 break 语句。当在循环中使用 break 语句,在执行到该语句时,就会中断循环并执行循环体之后的代码块。 语法 Scala 中 break 的语法有点不大一样,格式如下: // 导入以下包 import scala.util.control._ // 创建 Br
主要内容:if 语句,实例,if...else 语句,实例,if...else if...else 语句,实例,if...else 嵌套语句,实例Scala IF...ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: if 语句 if 语句有布尔表达式及之后的语句块组成。 语法 if 语句的语法格式如下: 如果布尔表达式为 true 则执行大括号内的语句块,否则跳过大括号内的语句块,执行大括号之后的语句块。 实
主要内容:第一个 Scala 程序,脚本形式,HelloWorld.scala 文件代码:,基本语法,标识符,Scala 关键字,Scala 注释,空行和空格,换行符,Scala 包如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的。 我们可以认为 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递。接下来我们来理解下,类,对象,方法,实例变