我正在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时,它运行得非常好。