Эквивалентный запрос BSON Document - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь агрегировать запрос в базе данных mongo.

Я могу найти команду для агрегата в командной строке, а также в robomongo.

Пожалуйста, найдите запрос ниже

db.portfolio.aggregate([
    { $match: {id: "c-4fbfd8ed-8b4a-4cf6-b3e0-2f5f3200d6d4"}},
    { $project: {
        medias: {$filter: {
            input: '$medias',
            as: 'category',
            cond: {$eq: ['$$category.categoryId', "j_664e2bba-fa0e-4d31-aa26-732b92c1b872"]}
        }}
    }}
])

Но когда я пытался преобразовать в BSONDocument и запустить его, он выдает ошибку во время выполнения.Эквивалентный BSONDocument, который я добавил в своем коде:

 val commandDoc = BSONDocument(
      "aggregate" -> "portfolio", // we aggregate on collection `portfolio`
      "pipeline" -> BSONArray(
        BSONDocument("$match" -> BSONDocument("id" -> portfolioId)),
        BSONDocument(
          "$project" -> BSONDocument(
            "medias" -> BSONDocument(
                "$filter" -> BSONDocument(
                    "input" -> "$medias",
                    "as" -> "category",
                    "cond" -> BSONDocument(
                        "$eq" -> Json.arr("$$category.categoryId", categoryId)
                    )
                )
            )
          )
        )
      )
    )

ошибка, которая возникает при отладке кода во время выполнения:

The 'cursor' option is required, except for aggregate with the explain argument

Что мне нужно для решения этой проблемы,Я использую версию Монго 3.6.2, может ли это быть проблемой с версией, потому что, когда я пытался с Монго 3.2.7, она работала на отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...