ReactiveMongo:使用游标[BSONObjectID]查找查询

时间:2014-04-30 13:44:39

标签: mongodb scala reactivemongo

我的查询使用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()))))))

任何想法如何做到这一点?

提前致谢

1 个答案:

答案 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]))