0

在 RDMS 中,如果我必须执行“从 empid=100 的员工中选择 emp_name”。我会这样做,

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}) 的查询

目前这是我正在使用的代码,其中我必须分别编写“where”和“select”部分,我的意思是 dbObj(where) 和 projectdbObj(projecttion Or select part)。

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);
                }
            });

        }

请帮助优化代码。

4

1 回答 1

0

您可以在 MongoDB 3.0 中使用 Filters builder 构建“where”部分和 Projections builder 构建“select”部分,而无需单独创建对象。请参考以下例如:

FindIterable<Document> cursor = coll.find(Filters.eq("employee.empid",1000)).projection(Projections.fields(Projections.include("emp_name"),Projections.excludeId());
于 2015-08-22T04:48:40.933 回答