如何以RDBMS Driver方式执行MongoDB查询

时间:2015-07-27 15:20:12

标签: json mongodb mongodb-query mongodb-java mongo-java-driver

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

        }

请帮助优化代码。

1 个答案:

答案 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());