spring data mongo - 带有查询提示的 mongotemplate 计数

anz*_*ney 5 mongodb mongodb-java spring-data spring-data-mongodb

蒙戈文档指定您可以指定使用以下语法计数查询查询提示:

db.orders.find(
   { ord_dt: { $gt: new Date('01/01/2012') }, status: "D" }
).hint( { status: 1 } ).count()
Run Code Online (Sandbox Code Playgroud)

你能用 mongo 模板做到这一点吗?我有一个Query对象并且正在调用该withHint方法。然后我打电话mongoTemplate.count(query); 但是,我很确定它没有使用提示,尽管我并不乐观。

Nei*_*unn 3

当然,有几种形式,包括深入到基本驱动程序,但假设使用您定义的类,您可以这样做:

    Date date = new DateTime(2012,1,1,0,0).toDate();
    Query query = new Query();
    query.addCriteria(Criteria.where("ord_dt").gte(date));
    query.addCriteria(Criteria.where("status").is("D"));
    query.withHint("status_1");

    long count = mongoOperation.count(query, Class);
Run Code Online (Sandbox Code Playgroud)

因此,您基本上构建了一个Query对象并使用传递给您的操作的对象,.count()在本例中就是如此。

这里的“提示”是索引的名称,作为要在集合上使用的索引的“字符串”名称。默认情况下可能类似于“status_1”,但无论给出实际名称是什么。