记一次迭代中mongodb数据查询
项目背景:现项目主要是做关于机器人的调度系统,涉及到web端、移动端、小程序及服务端和实体机器人端;
迭代背景:设备演示界面需要展示设备当天所有的路径:历史路径+实时路径
记录方向:mongodb集合查询
记录时间:20210119
========================================
mongodb属于非关系型数据库,存储的格式与关系型数据库有质的区别。在测试过程中遇到了需要查询mongodb数据的的需求,学习了一下mongodb
的查询方式,并将实际使用到的查询方式记录于此;主要的方式主要是条件查询:单条件、多条件、and、or等方式;
在网上找了一张mongodb与关系型数据库之间的查询方式的区别表,该表转载自菜鸟教程
| 操作 | 格式 | 范例 | RDBMS中的类似语句 |
|---|---|---|---|
| 等于 | {<key>:<value>} |
db.col.find({"by":"菜鸟教程"}).pretty() |
where by = '菜鸟教程' |
| 小于 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
| 小于或等于 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
| 大于 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
| 大于或等于 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
| 不等于 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
以下是自己在测试过程中实际用到的查询组合:单条件、多条件、and、or等方式,主要把这几个基础的查询方式掌握后,其他的非规则性的特殊要求直接百度就可以得知相关的命令;
///1、单条件查询 db.device_status_history.find({"device_id": "00000000000000000010"}); ///2、单条件查询及投影 db.device_status_history.find({"device_id": "00000000000000000010"},{"device_id":1,"status_count":1}); ///3、条件查询:小于、小于等于、大于、大于等于、不等于 db.device_status_history.find({"status_count":{"$gte":NumberInt("60")}});///大于等于,后面的类型可以直接在集合中查看 ///4、and条件1,传入多个key,每个key以逗号隔,统计数量 db.device_status_history.find({"$and":[{"device_id": "00000000000000000010"},{"status_count":{"$gt":NumberInt("60")}}]}).count(); ///5、历史路径:、查询某个时间范围内的指定设备的数据 db.device_status_history.find({"$and":[{"create_time":{"$gt":ISODate("2021-01-18T00:00:00Z")}},{"create_time":{"$lt":ISODate("2021-01-19T00:00:00Z")}},{"device_id": "00000000000000000013"}]}) ///6、or条件查询 db.device_status_history.find({"$or":[{"device_id": "00000000000000000010"},{"device_id": "00000000000000000013"}]});

浙公网安备 33010602011771号