在Casbah教程(http://mongodb.github.com/casbah/tutorial.html)中找不到如何在MongoDB中编写/更新/删除对象的任何描述。请帮助说明示例或告诉哪些类可以查找这些方法。 谢谢!
答案 0 :(得分:4)
更新了答案
在提出问题并回答几个月后,Casbah文档已更新为包含Doing CRUD operations部分。也许这个问题/答案有助于实现这一目标。或者也许有人意识到没有在数据库教程中记录CRUD操作是克雷克雷。
原始答案
为了理解为什么Cashbah教程没有提供如何从MongoDB数据库插入,更新或删除文档的示例,一个好的起点是Casbah文档的第一段:
Casbah是MongoDB的Scala工具包---我们使用术语“工具包”而不是“驱动程序”,因为Casbah在官方mongo-java驱动程序之上集成了一个层,以便更好地与Scala集成。这与MongoDB有线协议的本机实现相反,Java驱动程序非常好。 Casbah使用implicits和Pimp My Library代码来增强现有的Java代码,而不是完全重写。
Casbah是一个增强Java驱动程序的工具包。因此,必须首先阅读Java驱动程序文档,然后阅读Casbah文档,以便有效地使用Casbah。
为了进一步激发建议,请看一下Casbah如何从Java驱动程序中包装一些方法:
trait MongoCollectionBase extends Logging { self =>
...
val underlying: DBCollection
...
def save[A <% DBObject](jo: A) = underlying.save(jo)
...
def update[A <% DBObject, B <% DBObject](q: A, o: B) = underlying.update(q, o)
...
def remove[A <% DBObject](o: A) = underlying.remove(o)
...
正如上面的摘录所示,Casbah的MongoCollection
是Java Driver DBCollection
的代理。这是为了说明如果Casbah工具包没有处理某些内容,则会通过调用Java驱动程序来处理它。
下面是如何使用Java驱动程序从MongoDB数据库插入,更新和删除文档的示例链接:
现在,您可以直接将这些示例移植到Casbah,以便了解Casbah与Java驱动程序的关系。
答案 1 :(得分:1)
我准备了一些如何使用casbah的例子,到目前为止非常简单。 我稍后会添加更多功能。
https://github.com/talgendler/casbah
object AddressMongoConverter {
def convertToMongoObject(address: Address): DBObject = {
MongoDBObject(
STREET -> address.street,
ZIP_CODE -> address.zipCode,
CITY -> address.city,
COUNTRY -> address.country
)
}
def convertFromMongoObject(db: DBObject): Address = {
Address(
street = db.getAsOrElse[String](STREET, mongoFail),
zipCode = db.getAsOrElse[Int](ZIP_CODE, mongoFail),
city = db.getAsOrElse[String](CITY, "Tel-Aviv"), // slightly different get
country = db.getAsOrElse[String](COUNTRY, "Israel")
)
}
}