java mongo驱动程序中mongo shell UUID()的等价物

时间:2018-06-18 07:13:21

标签: mongodb mongo-java-driver

以下查询在mongo shell中完美运行。

db.collection.find({ "_id" : UUID("87aa9ed6-8485-4517-8e90-08e521372e9a")})

我想在java中以编程方式实现相同的功能。我尝试过以下方法,但没有得到任何结果。

1) collection.find(eq("_id", "87aa9ed6-8485-4517-8e90-08e521372e9a"));

2) `UUID uuid = UUID.fromString("87aa9ed6-8485-4517-8e90-08e521372e9a");
collection.find(eq("_id", uuid));`

1 个答案:

答案 0 :(得分:0)

如果已定义mongoTemplate,则可以将其用于单个UUID

Query query= new Query();
query.addCriteria(Criteria.where("_id").is(uuid));
mongoTemplate.findOne(query,YourObjectName.class);

如果您有多个UUID,则可以使用条件或操作员

Query query= new Query();
Criteria criteria=new Criteria();
List<Criteria> orCriteria=new ArrayList<>();
String[] splitId=ids.split(",");
for(String id:splitId){
     UUID uuid = UUID.fromString(id);
     orCriteria.add(Criteria.where("_id").is(uuid));
  }
criteria.orOperator(orCriteria.toArray(new Criteria[orCriteria.size()]));
query.addCriteria(criteria);
mongoTemplate.find(query,YourObjectName.class);

Lmk,如果可行的话。