2013-01-25 64 views
2

我需要将以下mongo查询转换为java。将MongoDB查询转换为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。所以我只需要摆脱这一点。

回答

4

你需要给检索领域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);