Mongo 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和Play中的新东西)
var collection = Db.connect()
println("Connected to db : " + collection)
var list = Db.getAll(collection)
...
问题,Db.connect()似乎没有返回BSONCollection而是单位
所以我想知道你们是否可以给我一个像我这样的初学者的暗示......或者
很抱歉,如果这看起来像一个愚蠢的问题,但我甚至对文档感到困惑,因为我无法构建它的一部分
由于
答案 0 :(得分: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
)的数据库分辨率已弃用且不鼓励。
它建议你深入ReactiveMongo。