簡體   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