将MongoDB查询转换为Java

将MongoDB查询转换为Java,java,mongodb,Java,Mongodb,我需要将下面的mongo查询转换为java db.sample.find( { name:"abc" }, { _id: 0, cities: { $elemMatch: { cityName: "A" }}}); 我试了很多方法,但都找不出正确的方法 BasicDBObject eleMatch = new BasicDBObject(); eleMatch.put("cityName","A"); BasicDBObject up = new BasicDBObje

我需要将下面的mongo查询转换为java

db.sample.find( { name:"abc" }, { _id: 0, cities: { $elemMatch: { cityName: "A" }}});
我试了很多方法,但都找不出正确的方法

    BasicDBObject eleMatch = new BasicDBObject();
    eleMatch.put("cityName","A");
    BasicDBObject up = new BasicDBObject();
    up.put("$elemMatch",eleMatch);
    BasicDBObject query = new BasicDBObject();
    query.put("name","abc");
    query.put("cities",up);
    DBCollection dbcoll = mongoTemplate.getCollection("sample");
    DBObject object = dbcoll.findOne(query);

但此对象的结果包含id。所以我只需要去掉它。

您需要将检索到的字段作为findOne方法的第二个参数

BasicDBObject retrievedField = new BasicDBObject();
retrievedField.put("_id",0);

dbcoll.findOne(query, retrievedField);
另外,如果您想检索显示的确切查询,我认为您需要将elemMatch对象附加到retrievedFields,而不是将其添加到queryObject

BasicDBObject eleMatch = new BasicDBObject();
eleMatch.put("cityName","A");
BasicDBObject up = new BasicDBObject();
up.put("$elemMatch",eleMatch);
retrievedField.append(up);

BasicDBObject query = new BasicDBObject();
query.put("name","abc");

DBCollection dbcoll = mongoTemplate.getCollection("sample");
DBObject object = dbcoll.findOne(query, retrievedField);

您需要将检索到的字段作为findOne方法的第二个参数

BasicDBObject retrievedField = new BasicDBObject();
retrievedField.put("_id",0);

dbcoll.findOne(query, retrievedField);
另外,如果您想检索显示的确切查询,我认为您需要将elemMatch对象附加到retrievedFields,而不是将其添加到queryObject

BasicDBObject eleMatch = new BasicDBObject();
eleMatch.put("cityName","A");
BasicDBObject up = new BasicDBObject();
up.put("$elemMatch",eleMatch);
retrievedField.append(up);

BasicDBObject query = new BasicDBObject();
query.put("name","abc");

DBCollection dbcoll = mongoTemplate.getCollection("sample");
DBObject object = dbcoll.findOne(query, retrievedField);