在RDMS中,如果我必须执行"从Employee中选择emp_name,其中empid = 100"。我会这样做,
String query = "Select emp_name from Employee where empid=100"
Statement stmt = DriverManager.getConnection(db, user, password).createStatement();
result = stmt.executeQuery(query);
我如何在MongoDB中执行相同操作,我得到的查询类似于" Employee.find({' empid:1000'},{emp_name:1})
目前这是我正在使用的代码,我必须在其中编写'其中'和'选择'部分我的意思是dbObj(where)和projectdbObj(项目或选择部分)。
DBObject dbObj = (DBObject) JSON.parse("{'employee.empid':'1000'}");
DBObject projectdbObj = (DBObject) JSON.parse("{'emp_name':1}");
try{
MongoCollection<Document> coll = mongoClient.getDatabase("Company" ).getCollection("Employee");
FindIterable<Document> cursor = coll.find((Bson) dbObj).projection((Bson) projectdbObj);
cursor.forEach(new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.print(document);
}
});
}
请帮助优化代码。
答案 0 :(得分:0)
您可以使用“过滤器”构建器来构建“where”部分,并使用“Projection”构建器在MongoDB 3.0中构建“select”部分,而无需单独创建对象。请参考以下内容:
FindIterable<Document> cursor = coll.find(Filters.eq("employee.empid",1000)).projection(Projections.fields(Projections.include("emp_name"),Projections.excludeId());