只需获取整个集合
Simply get the whole collection
Mongo 3.2
scala版本 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 个连接(如果我没看错的话,这是预期的)。
然后我尝试修改 "simple query" 文档中的内容,但发现 IntelliJ 说 cursor[BSONDocument] 已弃用,我应该使用 cursor() 而不是(我做了)。
最后我得到了:
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() 似乎return 不是 BSONCollection,而是 Unit
所以我想知道你们是否可以给我一些提示或像我这样的初学者......
抱歉,如果这看起来像一个愚蠢的问题,但我什至对文档感到困惑,因为我无法构建其中的一部分
谢谢
您的 Db
以 val
声明结束。
如果您查看各种 Scala 教程,您会发现这意味着此函数执行 return Unit
.
如果你想 return 值而不是在本地分配它,你必须删除声明,只需要最后一行 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 中更深入。
Mongo 3.2 scala版本 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 个连接(如果我没看错的话,这是预期的)。
然后我尝试修改 "simple query" 文档中的内容,但发现 IntelliJ 说 cursor[BSONDocument] 已弃用,我应该使用 cursor() 而不是(我做了)。
最后我得到了:
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() 似乎return 不是 BSONCollection,而是 Unit
所以我想知道你们是否可以给我一些提示或像我这样的初学者......
抱歉,如果这看起来像一个愚蠢的问题,但我什至对文档感到困惑,因为我无法构建其中的一部分
谢谢
您的 Db
以 val
声明结束。
如果您查看各种 Scala 教程,您会发现这意味着此函数执行 return Unit
.
如果你想 return 值而不是在本地分配它,你必须删除声明,只需要最后一行 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 中更深入。