2015-11-07 144 views
0

如何在mongoDB中使用mongoDB java驅動程序查詢numberLong字段?Java MongoDB:使用numberLong字段查詢

我試過這個根據這個SO帖子:Java Mongodb numberlong query,但它不起作用。

Query query= new Query(); 
query.addCriteria(Criteria.where("time").is("NumberLong("+article.getDate()+")")); 

我也試過這個地方article.getDate()長期以來的返回類型和它不工作:

query.addCriteria(Criteria.where("time").is(article.getDate())); 

還有就是Java驅動程序內沒有new NumberLong對象使用。

https://docs.mongodb.org/manual/core/shell-types/建議使用NumberLong()包裝器,但它只適用於javascript外殼,不適用於java。

回答

0
MongoClient client = new MongoClient(); 
    MongoDatabase mongoDb = client.getDatabase("test"); 
    MongoCollection<Document> mongoCollection = mongoDb 
      .getCollection("numberFormatTest"); 

    mongoCollection.drop(); 

    Document smith = new Document("name", "Smith").append("age", 30) 
      .append("profession", "Programmer") 
      .append("phoneNo", "9848022338"); 

    Document jones = new Document("name", "Jones").append("age", 30) 
      .append("profession", "Hacker") 
      .append("phoneNo", "9000000000000"); 

    printJson(smith); 
    printJson(jones); 
    // mongoCollection.insertMany(asList(smith,jones)); 

    System.out.println("Phone number: " 
      + Long.valueOf(smith.getString("phoneNo")).longValue()); 

上面這段代碼可能適合你。目前,我嘗試使用查找,但它也適用於更新。

即使在您所共享的上述鏈接中,NumberLong包裝器也將字段值保存爲字符串數據類型,而不是長數據類型。以下聲明證明了這一點。

「的NumberLong()包裝接受,只要一個字符串:」

0

我覺得這只是我在這種情況下的監督。查詢這裏的實際工作:

query.addCriteria(Criteria.where("time").is(article.getDate())); 

我呼籲我的對象字段,而不是「時間」,「日期」,符合它沒有得到回升,當我詢問。如下更改它使其正常工作。

query.addCriteria(Criteria.where("date").is(article.getDate()));