"1234") val modifier = BSON-6ren">
gpt4 book ai didi

mongodb - ReactiveMongo:如何将 FindAndModify 返回的 BSON 转换为 JSON

转载 作者:可可西里 更新时间:2023-11-01 09:56:51 25 4
gpt4 key购买 nike

下面是使用 Mongo 的 FindAndModify 更新文档的代码:

val selector = BSONDocument("id" -> "1234")
val modifier = BSONDocument("$set" -> BSONDocument("email" -> "new@domain.com"))

ReactiveMongoPlugin.db.command(FindAndModify(
collection.name,
selector,
Update(modifier, false),
false,
None
)).transform(
success => success.map { s =>
// doesn't work...
Json.fromJson[Seq[JsValue]](toJson(s)).map(for (item <- _) yield item).get
}.getOrElse(List[JsValue]()),
failure => failure match {
case e: LastError => DaoServiceException(e.message, Some(DATABASE_ERROR))
}
)

success block 中,我试图将返回的 BSONDocument 集合转换为 JsValue 集合......但它没有工作并且生成的 JsValue 集合始终为空(我已经验证了命令返回的 BSONDocument 集合并且我确认它是非空 ).我错过了什么吗?

最佳答案

BSON 处理程序隐式(在评论中建议)可能不起作用,因为 FindAndModify 命令具有返回 Option[BSONDocument] 的严格签名

FindAndModify extends BSONCommandResultMaker[Option[BSONDocument]]

假设返回的结果是Future[Option[BSONDocument]]类型

可以导入json格式

import play.modules.reactivemongo.json.BSONFormats._

并申请

result.map(docOpt => docOpt.map(d => Json.toJson(d)))

在结果上,或者直接调用转换

import play.modules.reactivemongo.json.BSONFormats

result.map(docOpt => docOpt.map(d =>
BSONFormats.BSONDocumentFormat.writes(d).as[JsObject]))

关于mongodb - ReactiveMongo:如何将 FindAndModify 返回的 BSON 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21666105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com