在Casbah教程(http://mongodb.github.com/casbah/tutorial.html)中找不到任何描述如何在MongoDB中编写/更新/删除对象。请帮忙举例说明或者告诉用什么类去寻找这些方法。 谢谢!Scala:使用Casbah在MongoDB中写入/更新/删除对象的例子?
回答
更新回答
几个月后,这个问题被问和回答的卡斯巴文档进行了更新,包括Doing CRUD operations部分。也许这个问题/答案有助于实现这一目标。或者也许有人意识到不在数据库教程中记录CRUD操作是cray cray。
原来的答案
为了理解为什么Cashbah教程没有提供如何插入,更新或从MongoDB数据库中删除的文件的例子,一个良好的开端是卡斯巴第一段文档:
卡斯巴是Scala的工具MongoDB的---我们用术语“工具包”,而不是“司机”,作为卡斯巴具有更好的整合集成官方蒙戈的Java驱动程序之上的一层斯卡拉。这与MongoDB有线协议的本地实现不同,Java驱动程序非常好。 Casbah不是完全重写,而是使用implicits和Pimp My Library代码来增强现有的Java代码。
Casbah是一个增强Java驱动程序的工具包。因此,必须先阅读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)
...
正如上述摘录表明,卡斯巴的MongoCollection
是Java驱动程序的DBCollection
的代理。这是为了说明如果某件事没有被Casbah工具包处理,它将被调用Java驱动程序来处理。
下面是链接,如何插入,更新和使用Java驱动程序从MongoDB数据库中删除文件的例子:
现在应该很简单地将这些示例移植到Casbah中,以了解Casbah如何与Java驱动程序相关。
我准备了一些如何使用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")
)
}
}
嗯..你在这里的示例不涉及写作/更新/删除问题作者要求 - 但它涵盖数据转换(链接背后的东西可能没有看到)。 – akauppi 2013-12-23 19:19:02
@akauppi链接背后的东西有:) – 2013-12-24 11:33:45
- 1. 使用Scala/Casbah从MongoDB DBObject提取值
- 2. 使用Casbah/Scala在MongoDB上执行自定义函数
- 3. 如何使用Casbah查找MongoDB上的对象ID?
- 4. LinqToEntites更新,删除,插入不与使用LinqDataSource对象工作
- 5. MongoDb casscade更新/删除
- 6. 删除MongoDB中的子集合中的对象
- 7. 在Django中删除子对象时删除父对象
- 8. C++上一条记录在写入新对象时被删除
- 9. 使用mongoose在mongoDb中更新数组中的对象
- 10. 如何在c#.net应用程序中使用mongodb插入,更新和删除
- 11. 在MongoDB中记录插入,更新和删除操作
- 12. MongoDB - 从集合中删除对象
- 13. MongoDB:从数组中删除对象
- 14. MongoDB从shell中删除GridFS对象
- 15. 用Casbah查询深度嵌套的MongoDB对象[斯卡拉]
- 16. 使用Scala(Casbah/Rogue)在MongoDB中进行Group By(聚合地图缩减功能)
- 17. 使用nodejs删除MongoDB中的对象导致错误
- 18. 如何在mongodb中正确更新嵌入对象的字段?
- 19. 在scala对象中注入
- 20. NotifyCollectionChangedAction:删除对象实例?
- 21. 删除图例中的特定对象
- 22. 删除Realm对象后更新UICollectionView
- 23. Android sqlite - 更新对象将其删除
- 24. 删除对象后更新arraylist
- 25. 更新/删除猫鼬对象属性
- 26. 删除(更新)coreData对象
- 27. 在使用POCO时删除实体框架中的子对象
- 28. 使用setattr()更新对象实例
- 29. 针对MongoDB的Casbah&Rogue - 查询功能
- 30. 使用更新mongoDB从objectId中移除
教程必须改变,因为现在它似乎有我需要的写/更新/删除对象的所有东西。另一个教程(http://api.mongodb。org/scala/casbah/2.0/tutorial.html)缺乏这些 - 阅读都应该有所有需要的信息。或者我错过了什么? – akauppi 2013-12-23 20:02:47
你是对的。我在下面的答案中添加了一个注释,提到文件在问题被提出并回答几个月之后进行了更新,以包含有关CRUD操作的部分。 http://mongodb.github.io/casbah/tutorial.html#doing-crud-operations – 2014-02-19 04:42:14