繁体   English   中英

如何使用Java在MongoDB中获取小于或大于某些值的文档

[英]How to get Documents less than or greater than some value in mongodb using java

我想使用Java获取员工ID大于50且小于500的所有可用文档。

我已经尝试过了

BasicDBObject gtQuery = new BasicDBObject();
gtQuery.put("employeeID", new BasicDBObject("$gt", 50).append("$lt", 500));
DBCursor cursor = collection.find(gtQuery);
while(cursor.hasNext()) {
        System.out.println(cursor.next());
};

但是,即使我在数据库中处于该范围内的文档,也无法从中得到任何结果。 请告诉我原因...

集合中文档的样本格式。

{“ employeeID”:“ 450”,“ name”:“ AAA”}

查询似乎很好,但是,我将检查其执行的集合(并确保它是正确的)。

另外,另一种调试方法是在控制台中打印查询,然后在mongo shell中执行该查询,

例如db.employee.find({employeeID : {$gt : 50, $lt : 500}})

集合中的主要问题之一是employeeID被存储为String。 如果您100%确定所有employeeID都是数字,则建议将字段从String转换为Integer。 尝试使用以下代码来转换employeeID字段:

    DBCursor cursor = collection.find();
    while (cursor.hasNext()) {
        BasicDBObject current_object = (BasicDBObject) cursor.next();

        current_object.update(
                new BasicDBObject().append("_id", current_object.getObjectId("_id"), 
                        new BasicDBObject()
                                .append(
                                        "$set", 
                                        new BasicDBObject("employeeID", Integer.parseInt(current_object.getString("employeeID"))
                                        )
                                )
                )
        );
    }

然后,您可以使用您的代码来获取员工50 <employeeID <500。
确保此转换不会严重影响您的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM