gpt4 book ai didi

scala - 从 scala 将文档插入 mongodb 时出错

转载 作者:可可西里 更新时间:2023-11-01 09:20:05 24 4
gpt4 key购买 nike

尝试从 scala 插入到 mongodb 数据库。以下代码不创建数据库或集合。也尝试使用默认的测试数据库。我如何执行 CRUD 操作?

object Store {
def main(args: Array[String]) = {
def addMongo(): Unit = {
var mongo = new Mongo()
var db = mongo.getDB("mybd")
var coll = db.getCollection("somecollection")
var obj = new BasicDBObject()
obj.put("name", "Mongo")
obj.put("type", "db")
coll.insert(obj)
coll.save(obj)
println("Saved") //to print to console
}
}

最佳答案

乍一看,你的代码看起来还不错,尽管你有那个杂散的 def addMongo(): Unit = {
代码在顶部。我会遵从关于在此处查找错误的建议……注意两点:

1) save()insert() 是互补的操作——你只需要一个。 insert() 将始终尝试创建一个新文档...如果未设置 _id 字段,save() 将创建一个,如果是,则更新代表的 _id

2) 默认情况下,Mongo 客户端不等待写操作的应答。 MongoDB 中很可能发生错误,导致您的写入失败。 getLastError() 命令将返回当前连接上最后一次写操作的结果。因为 MongoDB 的 Java 驱动程序使用连接池,所以你必须告诉它在你想要“安全”运行的操作期间将你锁定到单个连接(例如检查结果)。这是 Java 驱动程序的最简单方法(不过在 Scala 中,示例代码很明智):

   mongo.requestStart() // lock the connection in
coll.insert(obj) // attempt the insert
getLastError.throwOnError() // This tells the getLastError command to throw an exception in case of an error
mongo.requestDone() // release the connection lock

看看这个优秀的writeup on MongoDB's Write Durability ,特别关注 Java 驱动程序。

您可能还想看看 Scala driver I maintain (Casbah)它包装了 Java 驱动程序并提供了更多的 Scala 功能。

我们在 safety() 中提供了安全写入概念的绕过执行方法版本,这使得测试写入成功变得容易得多。

关于scala - 从 scala 将文档插入 mongodb 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com