标签: casbah

如何使用Casbah在MongoDB上按对象ID查找?

我正在尝试编写一个查询,通过对象ID与Casbah查找,它似乎微不足道但是......我找不到.

我试过这个:

def get(id: Option[String]): User = { 
    val mongoDB : MongoDB = MongoConnection().apply("test")
    val mongoColl : MongoCollection = mongoDB.apply("users")
    val objectId = id.getOrElse().asInstanceOf[String]
    val o : DBObject = MongoDBObject("_id" -> objectId)
    val u = mongoColl.findOne(o)
    val user = new User()
    for(x <- u){
         user.id = x.getAs[String]("_id")
         user.username = x.getAs[String]("username")
         user.password = x.getAs[String]("password")
    }
    user
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

def get(id: Option[String]): User = { 
        val mongoDB : MongoDB = MongoConnection().apply("test")
        val mongoColl : MongoCollection = mongoDB.apply("users")
        val objectId = "ObjectId(\"" +id.getOrElse().asInstanceOf[String] …
Run Code Online (Sandbox Code Playgroud)

scala mongodb casbah

8
推荐指数
1
解决办法
1万
查看次数

如何查询数组[String]的正则表达式匹配?

我尝试通过Casbah查询MongoDB的字段是一个带有正则表达式的字符串数组.

例如:

我有一个带有ips列表的Maschine,它们在字段ips中以字符串形式存储.现在我想搜索所有具有子网192.168的计算机.

对我来说,我看起来我无法查询应用于每个条目的regexp的数组,如果其中一个条目匹配,则返回该机器.

有什么方法可以进行这样的查询吗?

- 修正了

谢谢你的帮助.

现在一切都有效.最后我需要解决Casbah的一个限制,因为我需要加入查询$或者Casbah抱怨错误地使用regexp.

我的RegExp Array查询的最终代码包含另外一个字段:

val regexp = ".*" + parameter + ".*"
val nameQ = MongoDBObject("serverName" -> regexp.r)
val ipsQ = MongoDBObject("ips" -> regexp.r)
val bldr = MongoDBList.newBuilder
bldr += ipsQ
bldr += nameQ
val query = MongoDBObject("$or" -> bldr.result.asDBObject)
val result = find(query)
Run Code Online (Sandbox Code Playgroud)

它不是最好的代码,需要修复参数的字符串连接.但它的工作原理:)

scala mongodb casbah salat

8
推荐指数
1
解决办法
2443
查看次数

通过Casbah的正则表达式找到

如何使用正则表达式Collection#find(/* HERE */):

val coll = MongoConnection()("foo")("bar")
for(x <- coll.find("name" -> ".*son$".r)) {
   // some operations...
}
Run Code Online (Sandbox Code Playgroud)

scala mongodb casbah mongodb-scala

7
推荐指数
1
解决办法
2254
查看次数

如何将Mongo BasicDBList转换为不可变的scala列表

我有一个已经持久存储到数据库中的BasicDBList.我现在正在读取数据并尝试将列表转换为不可变的scala列表,如下所示:

val collection = mongoFactory.getCollection("tokens")    
val appId = MongoDBObject("appId" -> id)
val appDBObject = collection.findOne(appId) 
val scope: List[String] = appDBObject.get("scope").asInstanceOf[List[String]]
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个类转换异常,说不可能将BasicDBList转换为Scala不可变列表.

我尝试了各种组合,例如转换为地图等.似乎没有任何效果.

scala mongodb casbah

7
推荐指数
1
解决办法
7973
查看次数

Casbah Scala MongoDB驱动程序 - 从DBObject获取数据

好的,这是另一个关于Casbah和MongoDB基础知识的问题.从数据库中检索DBObject后,如何从中提取某些数据?我知道有DBObject.get()方法,返回java.lang.Object.我是否必须这样做,然后将数据转换为所需的类型?我不确定这是最好的方法吗...任何人都可以建议如何更好地做到这一点?

更新:

最后,我采用了手动处理所有内容的方式.由于案例类限制,我不使用Salat,因为不建议将案例类用于生孩子,这需要架构重新安排.然而,答案被标记为最佳答案,因为它在大多数情况下都有效,而且这里没有其他更一般的答案.

mongodb casbah

7
推荐指数
1
解决办法
4210
查看次数

新的Scala项目的NoSQL(例如MongoDB)或RDMS(例如PostgreSQL)?

我正在Scala开发一个全新的项目.它只是一堆CRUD操作的应用程序,但是,由于一些古怪的要求,Play2或Lift不符合要求,所以我将从头开始开发应用程序.这意味着Anorm或ScalaQuery成为数据库集成的不太明显的选择,让我有一个问题:是时候尝试新的东西了吗?

我过去的技术堆栈主要包括Java和PostgreSQL,我有ORM和纯SQL的经验.像MongoDB这样的NoSQL数据库管理系统是典型RDBMS的良好替代品,还是特殊情况的应用程序数据存储?此外,数据库的选择如何影响更大的Scala系统设计(如果有的话)?例如,您使用类似JSON的接口与数据库进行通信,以及Web和REST服务之间的JSON这一事实并不意味着如果中间的所有内容都成为Scala对象,或者它是什么?

我基本上要求有人从关系数据库转移到对象/文档类型数据库,特别是使用Scala.我知道即将发布的SLICK承诺提供良好的RDBMS集成.那么,如果像TypeSafe这样的公司决定在TypeSafe堆栈中建立RDBMS集成部分,那么我将使用Casbah集成到MongoDB上游吗?

如果这个问题看起来有点含糊,请道歉.我希望有正确见解或经验的人能够提供帮助.

更新:

不向SLICK添加链接的道歉(这是相当新的).开始:

更新2:

对于技术我个人的第一场胜利通常为开发人员的生产力 -这相当于轻巧简单:快速学习,容易维护,没有魔法

architecture scala mongodb scalaquery casbah

7
推荐指数
1
解决办法
2883
查看次数

如何使用Cashbah MongoDB连接?

注意:我意识到在SO上有一个类似的问题,但是它谈到了Casbah的旧版本,而且,答案中解释的行为不是我所看到的!

我的印象是Casbah的MongoClient处理连接池.然而,在我的进程中做lsof我看到一个庞大且越来越多的mongodb连接,这让我怀疑这个池真的存在.

基本上,这就是我正在做的事情:

class MongodbDataStore {
  val mongoClient = MongoClient("host",27017)("database")

  var getObject1(): Object1 = {
    val collection = mongoClient("object1Collection")
    ...
  }

  var getObject2(): Object2 = {
    val collection = mongoClient("object2Collection")
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

所以,我从不关闭MongoClient.

我应该在每次查询后关闭它吗?实现我自己的池?然后怎样呢?

谢谢

database scala mongodb casbah

7
推荐指数
1
解决办法
559
查看次数

如何使用Casbah for MongoDb对域模型进行CRUD操作?

卡斯巴有一个教程:

http://api.mongodb.org/scala/casbah/current/tutorial.html

但我发现很难按照教程,因为我还在学习Scala.

所有我想知道如何使用Casbah进行简单的CRUD操作,然后再开始更先进.

鉴于以下域名模型:

class Hotel (var name: String, var stars: Int, val address:  Address)

class Address(var street:String, var city: String, var postCode: String)



val address = new Address(street = "1234 st", city = "edmond", postCode = "1232234", country = "USA" )


  val hotel = new Hotel(name = "Super Nice", stars = 4, address =  address)

val address2 = new Address(street = "main st", city = "edmond", postCode = "1232234", country = "USA" )

val hotel2 = new Hotel(name …
Run Code Online (Sandbox Code Playgroud)

scala mongodb casbah

6
推荐指数
1
解决办法
2278
查看次数

Casbah Scala MongoDB驱动程序 - 嵌入式对象

我知道MongoDB中的对象可以包含多个级别的数据(就像JSON对象的方式一样).但是,Casbah驱动程序教程仅涵盖"平面"对象的创建,其中只有一个级别的数据.如何使用Casbah创建和处理多级对象?

scala mongodb casbah

6
推荐指数
1
解决办法
1541
查看次数

我应该在MongoDb的play框架中使用MongoDb模块或morphia模块或Casbah吗?

我正在使用scala开发一个play框架项目,其中我希望使用MongoDb作为数据存储来使用Scala域类(甚至是Java域类).

我希望在每天服务数十万甚至数百万的请求时获得最佳性能.

由于scala语言和Play框架都是按月添加新功能,因此问答框架1.2.2中提到的模块的最新生产版本,scala 0.9.1+和scala语言2.8+的最佳答案是什么? ?

mongodb playframework casbah

5
推荐指数
1
解决办法
1208
查看次数