2016-04-22 80 views
0

蒙戈3.2 scalaVersion 2.11.7 活化劑1.3.9簡單地得到整個集合

所以我無法簡單地獲取整個集合

我試圖用文檔的http://reactivemongo.org/頁和第一連接

def connect() { 
    // gets an instance of the driver 
    // (creates an actor system) 
    val driver = new MongoDriver 
    val connection = driver.connection(List("localhost")) 

    // Gets a reference to the database "plugin" 
    val db = connection("plugin") 

    // Gets a reference to the collection "acoll" 
    // By default, you get a BSONCollection. 
    val collection = db("acoll") 
} 

到目前爲止好,我有10個連接(如果我已經正確地閱讀正如預期的那樣)。

然後我試圖修改究竟是什麼「簡單查詢」的文件上,而是跨越的IntelliJ出來說光標[BSONDocument]已被廢棄,我應該使用光標(),而不是(我做了)。

我結束了:

def getAll(collection: BSONCollection) = { 
val query = BSONDocument() 
val filter = BSONDocument(
    "_id" -> 1 
) 
val futureList: Future[List[BSONDocument]] = 
    collection. 
    find(query, filter). 
    cursor(). 
    collect[List]() 

futureList.map { list => 
    list.foreach { 
    doc => println(s"found document: ${BSONDocument pretty doc}") 
    } 
} 
} 

現在在我的控制,我與Db.connect連接(順便說一下,Db的是一個對象Db的{},不知道如果我應該這樣做,那種Scala中,MongoDB的新播放)

var collection = Db.connect() 
println("Connected to db : " + collection) 
var list = Db.getAll(collection) 

... 

問題,Db.connect()似乎並沒有返回BSONCollection但一股股

所以我在想,如果你們能夠給我一個提示或某事的乞討內像我......

很抱歉,如果這似乎是一個愚蠢的問題,但我很困惑,甚至對文檔的,因爲我不能建立一個單一的一塊吧

感謝

回答

0

Db與結束val聲明。

如果你看看各種Scala教程,你會看到它的意思是這個函數確實返回Unit

如果您想要返回值而不是在本地進行分配,則必須刪除聲明,只需將最後一行作爲db("acoll")即可。

然後你的功能getAll遭受同樣的誤解。

futureList.map { list => 
    list.foreach { 
    doc => println(s"found document: ${BSONDocument pretty doc}") 
    } // foreach = Unit 
} // so there's Future[Unit] 

使用connection("plugin")(又名MongoConnection.apply)的DB分辨率已被棄用,氣餒。

它的建議你深入ReactiveMongo