2

ReactiveMongo を使用した私のクエリ:

collection
  .find(
    Json.obj("relateds" -> Json.obj("$elemMatch" -> activityRelated)),
    Json.obj("subscriberId" -> 1, "_id" -> 0)
  )
  .cursor[BSONObjectID]
  .collect[Seq]()

これは、見つかったドキュメントごとに「subscriberId」フィールドを 1 つだけ返すためのものです。最終的な出力タイプは Future[Seq[BSONObjectID]] である必要があります

しかし、それは失敗します:

Failure(java.lang.RuntimeException: JsError(List((,List(ValidationError(未処理の json 値,WrappedArray()))))))

これを行う方法はありますか?

前もって感謝します

4

1 に答える 1

2

このクエリの応答は、値ではなくオブジェクトのシーケンスです。

{ subscriberId : "foo" }

そのため、この ID の単一フィールドでケース クラスを定義し、カーソル タイプをこのケース クラスとして設定するか、そのようなことを試す必要があります。

collection
  .find(
     Json.obj("relateds" -> Json.obj("$elemMatch" -> activityRelated)),
     Json.obj("subscriberId" -> 1, "_id" -> 0)
  )
  .cursor[JsValue]
  .collect[Seq]() 
  .map(_.map(_.\("subscriberId").as[BSONObjectID]))
于 2014-04-30T13:57:15.063 に答える