我的查询使用ReactiveMongo:
collection
.find(
Json.obj("relateds" -> Json.obj("$elemMatch" -> activityRelated)),
Json.obj("subscriberId" -> 1, "_id" -> 0)
)
.cursor[BSONObjectID]
.collect[Seq]()
这意味着每个找到的文档只返回一个字段“subscriberId”。最终输出类型应为Future [Seq [BSONObjectID]]
但它失败了:
失败(java.lang.RuntimeException:JsError(List((,List(ValidationError(未处理的json值,WrappedArray()))))))
任何想法如何做到这一点?
提前致谢
答案 0 :(得分:2)
此查询的响应是对象序列,而不是值:
{ subscriberId : "foo" }
因此,您需要为此id定义具有单个字段的case类,然后将游标类型设置为此case类或尝试类似的东西:
collection
.find(
Json.obj("relateds" -> Json.obj("$elemMatch" -> activityRelated)),
Json.obj("subscriberId" -> 1, "_id" -> 0)
)
.cursor[JsValue]
.collect[Seq]()
.map(_.map(_.\("subscriberId").as[BSONObjectID]))