Я пытаюсь использовать Aggregate в ReactiveMongo, но получаю странную ошибку.
Я создаю команду Aggregate следующим образом:
val command = Aggregate("invites", Seq(
Match(BSONDocument("origin" -> 1, "status" -> 3, "created" -> BSONDocument("$gte" -> from.getMillis, "$lt" -> to.getMillis))),
Sort(List(reactivemongo.core.commands.Ascending("_id"))),
Group(BSONDocument("myId" -> "$venues.myId", "name" -> "$venues.name"))("count" -> SumValue(1))
))
позвони монго:
val result = collection.db.command(command)
это возвращает успешный поток:
Success(Stream(BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>), BSONDocument(<non-empty>)))
Затем я пытаюсь передать поток в BSONDocument:
result.map { doc =>
val bson = doc.asInstanceOf[BSONDocument]
Logger.info(BSONDocument.pretty(bson))
bson
}
Но я получаю:
Failure(java.lang.ClassCastException: scala.collection.immutable.Stream$Cons cannot be cast to reactivemongo.bson.BSONDocument)
scala.collection.immutable.Stream$Cons cannot be cast to reactivemongo.bson.BSONDocument
Чтобы обойти эту проблему, давайте воспользуемся Json lib:
val doc = result.map { Json.toJson(_) }
Это дает мне:
[
{
"_id": {
"myId": [
3111669
],
"name": [
"Some cool name 1"
]
},
"count": 3
},
{
"_id": {
"myId": [
3091695
],
"name": [
"Some cool name 2"
]
},
"count": 19
},
{
"_id": {
"myId": [
896
],
"name": [
"Coole name"
]
},
"count": 1
},
{
"_id": {
"myId": [
933
],
"name": [
"BALBLABLBL"
]
},
"count": 1
},
{
"_id": {
"myId": [
3000831
],
"name": [
"Cleaning Services"
]
},
"count": 2
},
{
"_id": {
"myId": [
3389731
],
"name": [
"Car company number uno"
]
},
"count": 5
}
]
Успех! Итак, мой вопрос. Как мне перевести мой поток в BSONDocument вместо значения json?