标签: reactivemongo

在scala特征中实例化val是正确的吗?

我在喷雾,akka,scala,reactivemongo项目工作,我有这个特点

trait PersistenceManager {

  val driver = new MongoDriver
  val connection = driver.connection(List("localhost"))

  def loan[A](collectionName: String)(f: BSONCollection => Future[A]): Future[A] = {
    val db = connection("flujo_caja_db")
    val collection = db.collection(collectionName)
    f(collection)
  }
}
Run Code Online (Sandbox Code Playgroud)

我也有Dao的对象使用这样的特性:

object Dao extends PersistenceManager {

   def find = loan("users"){
     collection =>
          collection.find(BsonDocument())....
   }

}
Run Code Online (Sandbox Code Playgroud)

在我的持久性管理器特征中实现这些数据库val是正确的吗?它的效果非常好.

谢谢!

scala reactivemongo

1
推荐指数
1
解决办法
161
查看次数

如何打印 BSONDocument 的内容

我很想使用reactiveMongo 实现CRUD 操作,这里是我从在线教程中找到的函数。

def findTicker(ticker: String) = {
    val query = BSONDocument("firstName" -> ticker)
    val future = collection.find(query).one

    future.onComplete {
      case Failure(e) => throw e
      case Success(result) => {
        println(result)

      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个结果:

Some(BSONDocument(<non-empty>))

我如何才能真正看到我正在寻找的实际可读 JSON 数据:

{ "_id" : ObjectId("569914557b85c62b49634c1d"), "firstName" : "Stephane", "lastName" : "Godbillon", "age" : 29 }

scala bson playframework reactivemongo

1
推荐指数
1
解决办法
2818
查看次数

ReactiveMongo/Play:`LastError:DatabaseException ['<none>']`,而db仍然更新

奇怪的问题:当我的播放应用程序尝试在使用reactivemongo时插入/更新来自某些mongoDB集合的记录时,操作似乎失败了一个神秘的消息,但实际上,记录插入/更新了.

更多信息:

  1. 从mongo控制台插入有问题的集合效果很好
  2. 阅读所有收藏品效果很好
  3. 读取和写入同一数据库中的其他集合效果很好
  4. 写给过去工作的有问题的集合.

错误信息是:

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[LastError: DatabaseException['<none>']]]
  at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280)
  at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206)
  at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100)
  at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99)
  at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:344)
  at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:343)
  at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
  at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70)
  at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)
  at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)
Caused by: reactivemongo.api.commands.LastError: DatabaseException['<none>']
Run Code Online (Sandbox Code Playgroud)

使用ReactiveMongo 0.11.14,Play 2.5.4,Scala 2.11.7,MongoDB 3.4.0.

谢谢!

更新 - 神秘感增厚!

根据@ Yaroslav_Derman的回答,我添加了一个.recover条款,如下:

collectionRef.flatMap( c =>
  c.update( BSONDocument("_id" -> publicationWithId.id.get), publicationWithId.asInstanceOf[PublicationItem], upsert=true))
  .map(wr => {
    Logger.warn("Write Result: " + wr )
    Logger.warn("wr.inError: " + wr.inError)
    Logger.warn("*************")
    publicationWithId
  }).recover({
  case de:DatabaseException => {
    Logger.warn("DatabaseException: " + …
Run Code Online (Sandbox Code Playgroud)

scala mongodb reactivemongo

1
推荐指数
1
解决办法
1143
查看次数

reactivemongo,找不到参数读取器的隐含值

我正在用reactivemongo做测试

在我的控制器中我有这个:

package controllers

import models._
import models.JsonFormats._
import play.modules.reactivemongo.MongoController
import scala.concurrent.Future
import reactivemongo.api.Cursor
import org.slf4j.{LoggerFactory, Logger}
import javax.inject.Singleton
import play.api.mvc._
import reactivemongo.api.collections.default.BSONCollection
import reactivemongo.bson._


@Singleton
class Users extends Controller with MongoController {


  private final val logger: Logger = LoggerFactory.getLogger(classOf[Users])

  val collection = db[BSONCollection]("users")

  // list all articles and sort them
  def list = Action.async { implicit request =>


  // get a sort document (see getSort method for more information)
    val sort = getSort(request)
    // build a selection document with …
Run Code Online (Sandbox Code Playgroud)

scala playframework reactivemongo

0
推荐指数
1
解决办法
2985
查看次数

如何使用ReactiveMongo更新文档

当我找到时,我从MongoDB返回以下文档列表"campaignID":"DEMO-1".

[
  {
    "_id": {
      "$oid": "56be0e8b3cf8a2d4f87ddb97"
    },
    "campaignID": "DEMO-1",
    "revision": 1,
    "action": [
      "kick",
      "punch"
    ],

    "transactionID": 20160212095539543
  },
  {
    "_id": {
      "$oid": "56c178215886447ea261710f"
    },
    "transactionID": 20160215000257159,
    "campaignID": "DEMO-1",
    "revision": 2,
    "action": [
      "kick"
    ],
    "transactionID": 20160212095539578
  }
]
Run Code Online (Sandbox Code Playgroud)

现在,我在这里尝试做的是给定的campaignID我需要找到它的所有版本(在我的情况下是修订版)并将action字段修改为deadString类型.我阅读了文档,他们的例子太简单了,在我的案例中没有太大帮助.这就是文档所说的:

val selector = BSONDocument("name" -> "Jack")

val modifier = BSONDocument(
  "$set" -> BSONDocument(
    "lastName" -> "London",
    "firstName" -> "Jack"),
    "$unset" -> BSONDocument(
      "name" -> 1))

// get a future update
val …
Run Code Online (Sandbox Code Playgroud)

scala reactivemongo

0
推荐指数
1
解决办法
1760
查看次数

如何使用Play的JSON库在ReactiveMongo中对带有查询的文档进行计数?

让我们考虑一下我有一个users具有age属性的集合。现在,我要计算集合中的所有文档users或仅统计与age属性匹配的文档。因此,我做了以下工作:

  def count(age: Option[Int] = None) = {
    if (age.isEmpty) roles.count()
    else users.count(Json.obj("age" -> age))
  }
Run Code Online (Sandbox Code Playgroud)

问题是users.count(Json.obj("age" -> age))抛出编译错误,因为count反应性mongo提供的方法需要类型Option[pack.Document]。知道我该如何解决吗?

如果重要的话,我正在使用Reactive Mongo版本0.11.11。

scala mongodb reactivemongo play-reactivemongo

0
推荐指数
1
解决办法
1291
查看次数

在 ReactiveMongo 中使用事务的方式是什么?

我正在尝试在 playframework 中使用带有reactivemongodb的事务。我该怎么做,或者是否有任何可用于 playframework 的文档?

scala reactivemongo

0
推荐指数
1
解决办法
264
查看次数