【问题标题】:how to execute MongoDB Query in RDBMS Driver way如何以 RDBMS 驱动方式执行 MongoDB 查询
【发布时间】:2015-07-27 15:20:12
【问题描述】:

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

        }

请帮助优化代码。

【问题讨论】:

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


    【解决方案1】:

    您可以在 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());
    

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 2012-06-19
      • 1970-01-01
      • 2017-11-13
      • 2019-06-09
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2019-03-01
      相关资源
      最近更新 更多