只需获取整个集合

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

所以我想知道你们是否可以给我一些提示或像我这样的初学者......

抱歉,如果这看起来像一个愚蠢的问题,但我什至对文档感到困惑,因为我无法构建其中的一部分

谢谢

您的 Dbval 声明结束。

如果您查看各种 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 中更深入。