在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. Scala + Eclipse + Casbah =對象mongodb不是包com的成員
- 3. 如何使用Casbah清除/刪除/清空MongoDb集合
- 4. 更新mongodb中的子對象
- 5. 刪除和更新對象
- 6. 更新嵌入對象MongoDB中
- 7. 使用Casbah/Scala在MongoDB上執行自定義函數
- 8. 如何使用Casbah查找MongoDB上的對象ID?
- 9. LinqToEntites更新,刪除,插入不與使用LinqDataSource對象工作
- 10. 使用Jquery插入,更新和刪除JSON對象
- 11. MongoDB更新的對象與項目刪除不保存
- 12. 如何將數據從MongoDB轉換爲包含Casbah和Scala的對象
- 13. 在Django中刪除子對象時刪除父對象
- 14. 刪除MongoDB中的子集合中的對象
- 15. 的MongoDB從陣列中刪除對象
- 16. MongoDb casscade更新/刪除
- 17. 使用JSON對象更新mongodb文檔
- 18. 如何在MongoDB中更新Array中的子對象
- 19. C++上一條記錄在寫入新對象時被刪除
- 20. 在Mongodb中使用$ pull刪除一個深度嵌入的對象
- 21. 更新對象的mongodb
- 22. MongoDB的更新對象
- 23. 使用Salat/Casbah的Scala案例類的持續前驗證
- 24. 如何在c#.net應用程序中使用mongodb插入,更新和刪除
- 25. 在MongoDB中更新嵌套對象
- 26. 在MongoDB中記錄插入,更新和刪除操作
- 27. MongoDB中刪除嵌套對象
- 28. MongoDB - 從集合中刪除對象
- 29. MongoDB:從數組中刪除對象
- 30. MongoDB從shell中刪除GridFS對象
教程必須改變,因爲現在它似乎有我需要的寫/更新/刪除對象的所有東西。另一個教程(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