在MongoDB中,Java驱动程序如何使用"解释"与聚合?

时间:2017-10-01 09:37:56

标签: java mongodb mongo-java-driver

在MongoDB Java 驱动程序中如何使用"解释"选项?

db.orders.aggregate([
      { $match: { status: "A" } },
      { $sort: { total: -1 } }
   ],
   { explain: true }
)

Collection.aggregate()不接受选项

orders.aggregate(Arrays.asList(
    Aggregates.match(Filters.eq("status","A")),         
    Aggregates.sort(Sorts.descending("total"))
))

2 个答案:

答案 0 :(得分:2)

您可以退回到runCommand并以这种方式使用explain command

类似的东西

db.runCommand(new Document(myMap))

myMap所在的位置(用JSON编写)

{"explain": {"aggregate": "my.collection", "pipeline": [{"$project": {"_id": 1}}]}}

答案 1 :(得分:-1)

虽然我还没有对此进行过测试,但您可以尝试通过创建Bson文档来传递该列表以汇总为:

Bson match = Filters.eq("status","A");
Bson explain = Filters.eq("$explain","true");
orders.aggregate(Arrays.asList(
                  Aggregates.match(match),
                  Aggregates.sort(Sorts.descending("total")),
                  Aggregates.project(explain)));

似乎还有一个现有的功能请求,通过MONGODB-JIRA#2104.

上的java驱动程序方法来实现相同的功能