鍍金池/ 問答/Java  數(shù)據(jù)庫  Office/ mongodb內(nèi)嵌數(shù)組查詢 java代碼實現(xiàn)

mongodb內(nèi)嵌數(shù)組查詢 java代碼實現(xiàn)

我在Robo 3T(一款mongodbGUI軟件)使用以下代碼

db.getCollection('json').find({"time":{$gte:1528771648859,$lte:1528771698869}},{"data":{$elemMatch :{"deviceid":456789123}}})

能夠獲取我想要的結果,但是我用利用一下代碼卻不可以

        BasicDBObject query = new BasicDBObject();
        query.put("time",(new BasicDBObject("$gte",1528771648859L)).append("$lte",1528771698869L));
        query.put("data",new BasicDBObject("$elemMatch",new BasicDBObject("deviceid",456789123)));
        DBCursor dbCursor = mongoTemplate.getCollection("json").find(query);

想請問各位大佬,我如何把上面的sql語句利用java實現(xiàn)并返回正確結果?

回答
編輯回答
蝶戀花

首先Robot 3T里面寫得就不對。find方法的簽名是:

db.<集合>.find(<查詢>, <投影>, <選項>);

{"data":{$elemMatch :{"deviceid":456789123}}}已經(jīng)屬于投影的參數(shù)了,雖然不會報錯,但肯定不是你想要的結果。相當于你的條件只是{"time":{$gte:1528771648859,$lte:1528771698869}},所以查到了結果。
Java的代碼反而是正確的。但因為多了一個條件,所以查不出結果來。

2018年7月20日 03:28