2

在 Casbah 教程( http://mongodb.github.com/casbah/tutorial.html )中找不到任何描述如何在 MongoDB 中编写/更新/删除对象。请帮助提供示例或告诉要查找这些方法的类。谢谢!

4

2 回答 2

4

更新的答案

在提出并回答了这个问题几个月后,Casbah 文档被更新为包括Doing CRUD 操作部分。也许这个问题/答案有助于实现这一目标。或者,也许有人意识到不在数据库教程中记录 CRUD 操作是克雷克雷。

原始答案

为了理解为什么 Cashbah 教程没有提供如何从 MongoDB 数据库中插入、更新或删除文档的示例,一个好的起点是 Casbah 文档的第一段:

Casbah 是 MongoDB 的 Scala 工具包 --- 我们使用术语“工具包”而不是“驱动程序”,因为 Casbah 在官方 mongo-java-driver 之上集成了一个层,以便更好地与 Scala 集成。这与 MongoDB 有线协议的本机实现相反,Java 驱动程序做得非常好。Casbah 没有完全重写,而是使用隐式和 Pimp My Library 代码来增强现有的 Java 代码。

Casbah 是一个增强 Java 驱动程序的工具包。因此,为了有效地使用 Casbah,必须先阅读 Java 驱动程序文档,然后再阅读 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)
  ...

正如上面的摘录所示,CasbahMongoCollection是 Java 驱动程序的DBCollection. 这是为了说明,如果 Casbah 工具包没有处理某些事情,那么它正在通过调用 Java 驱动程序来处理。

以下是有关如何使用 Java 驱动程序从 MongoDB 数据库中插入、更新和删除文档的示例的链接:

  • 此处记录了如何在数据库中插入和更新文档;
  • 此处提供了如何删除文档的示例。

既然您了解了 Casbah 与 Java 驱动程序的关系,那么将这些示例移植到使用 Casbah 应该很简单。

于 2013-03-28T03:33:57.360 回答
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")
    )
  }
}
于 2013-08-20T19:25:13.120 回答