簡體   English   中英

Scala MongoDB鏈接方法

[英]Scala MongoDB Chaining Methods

我想尋求有關美化客戶端代碼的幫助。

假設我有一些MongoDB檢索的基本方法:

 def find(dbo:DBObject):MongoCursor =
    mongoColl.find(dbo)

  def Sort(cursor: MongoCursor, sortFun: DBObject): MongoCursor =
    cursor.sort(sortFun)

  def Limit(cursor: MongoCursor, number: Int): MongoCursor = cursor.limit(number)

  def Offset(cursor: MongoCursor, number: Int): MongoCursor = cursor.skip(number)

  def toList(cursor: MongoCursor): List[A] =
   cursor map (readConverter(_)) toList

我想以不同的方式將它們鏈接在一起(假設我要執行一些有限的搜索,一些排序的搜索,就像基本上是一個裝飾器一樣)。 你會怎么做?

謝謝你的幫助。

您可以嘗試使用隱式值類來豐富MongoCursor

object ImplicitClassContainer {
  implicit class RichMongoCursor(val mc: MongoCursor) extends AnyVal {
    def sort(sortFun: DBObject): MongoCursor = mc.sort(sortFun)

    def limit(number: Int): MongoCursor = mc.limit(number)

    def offset(number: Int): MongoCursor = mc.skip(number)
  }

}

這樣使用

  import ImplicitClassContainer._

  def x(mc: MongoCursor): MongoCursor = {
    mc.offset(25).limit(25)
  }

基本上,這是用於向Array添加功能的相同模式:您可以使用“流樣式”獲得其他功能,但仍然是MongoCursor 由於它是隱式值類 ,因此在運行時不會創建對象的其他實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM