等效的BSON文档查询

时间:2018-05-21 07:02:51

标签: mongodb scala play-reactivemongo

我正在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

我应该如何解决此问题。 我正在使用mongo版本3.6.2,它是否可以与版本一起发行,因为当我尝试使用mongo 3.2.7时,它运行得非常好。

0 个答案:

没有答案