mongodb内嵌数组查询 java代码实现

新手上路,请多包涵

我在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实现并返回正确结果?

阅读 2.4k
1 个回答

首先Robot 3T里面写得就不对。find方法的签名是:

db.<集合>.find(<查询>, <投影>, <选项>);

{"data":{$elemMatch :{"deviceid":456789123}}}已经属于投影的参数了,虽然不会报错,但肯定不是你想要的结果。相当于你的条件只是{"time":{$gte:1528771648859,$lte:1528771698869}},所以查到了结果。
Java的代码反而是正确的。但因为多了一个条件,所以查不出结果来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题