mongodb条件查询实现结构化查询语句SQL
来源:互联网 发布:java telnet 编辑:程序博客网 时间:2024/06/06 03:37
mongodb条件查询
● 条件操作符
"$lt"===================>"<""$lte"==================>"<="
"$gt"===================>">"
"$gte"==================>">="
"$ne"===================>"!="
如:某集合B集合中文档有属性x值为整数,需查找1<x<=10的文档,写法如下:
db.B.find({"x":{"$gt":1,"$lte":10}})如:从某集合B中查找日期属性day值大于2015/01/01的文档数据,写法如下:
db.B.find({"day":{"$gt":new Date("2015/01/01")}})
● $in包含/$nin不包含
$in:查询匹配指定条件值的文档;$nin:查询不匹配指定条件值的文档;
SQL:写法:字段 in ('值1','值2'.....)
mongodb:db.B.find({"x":{"$in":['值1','值2',.....]}})SQL:写法:字段 not in ('值1','值2'.....)
mongodb:db.B.find({"x":{"$nin":['值1','值2',.....]}})$in/$nin优点:可指定不同类型条件和值。
● $or或查询
$or:查询匹配多个条件多个值的文档;SQL:写法:字段1 = 'xxx' or 字段2 in ( 'xxx').....
mongodb:db.B.find({"$or":[{"x":{"$in":['值1','值2'...]}},{"y":"3"}]})
● $all匹配所有
比如文档:{"name":jack,"age":[1,2,3]}
{"name":jack,"age":[1,4,3]}
db.B.find({"age":{"$all":[2,3]}})结果:{"name":jack,"age":[1,2,3]}
● $exists 判断文档属性是否存在
db.B.find({"name":{"$exists":true}}) --查找属性name存在的文档db.B.find({"name":{"$exists":false}}) --查找属性name不存在的文档
● 属性值为null情况
如下操作即可知道:> db.C.find(){ "_id" : ObjectId("5018fccd1781352fe25bf511"), "a" : "14", "b" : "14" }{ "_id" : ObjectId("5018fccd1781352fe25bf512"), "a" : "15", "b" : "15" }{ "_id" : ObjectId("5018fccd1781352fe25bf510"), "a" : "13", "b" : "13", "c" : null }> db.C.find({"c":null}){ "_id" : ObjectId("5018fccd1781352fe25bf511"), "a" : "14", "b" : "14" }{ "_id" : ObjectId("5018fccd1781352fe25bf512"), "a" : "15", "b" : "15" }{ "_id" : ObjectId("5018fccd1781352fe25bf510"), "a" : "13", "b" : "13", "c" : null }可见查询属性c值为null文档,包括属性c值为null、该属性c不存在两个部分。若想只查询属性c为null的文档如下:
> db.C.find({"c":{"$in":[null],"$exists":true}}){ "_id" : ObjectId("5018fccd1781352fe25bf510"), "a" : "13", "b" : "13", "c" : null }
● $mod取模运算
db.B.find({"age":{"$mod":[5,1]}}) --表示查找年龄除5余1的所有文档若查找年龄除5余1之外的所有文档,可结合$not运算:
db.B.find({"age":{"$not":{"$mod":[5,1]}}})
● 正则表达式
db.B.find({"name":/jack/i})
● $size
> db.C.find(){ "_id" : ObjectId("501e71557d4bd700257d8a41"), "a" : "1", "b" : [ 1, 2, 3 ] }{ "_id" : ObjectId("501e71607d4bd700257d8a42"), "a" : "1", "b" : [ 1, 2 ] }> db.C.find({"b":{"$size":2}}){ "_id" : ObjectId("501e71607d4bd700257d8a42"), "a" : "1", "b" : [ 1, 2 ] }
● $slice
返回数组的一个子集,即对以某属性为基础,返回多少条(范围)。也可以接受偏移值和要返回的元素的数量,来返回中间的结果。
> db.C.find(){ "_id" : ObjectId("501e71557d4bd700257d8a41"), "a" : "1", "b" : [ 1, 2, 3 ] }{ "_id" : ObjectId("501e71607d4bd700257d8a42"), "a" : "1", "b" : [ 1, 2 ] }> db.C.findOne({},{"b":{"$slice":[2,3]}}){ "_id" : ObjectId("501e71557d4bd700257d8a41"), "a" : "1", "b" : [ 3 ] }> db.C.findOne({},{"b":{"$slice":-2}}){ "_id" : ObjectId("501e71557d4bd700257d8a41"), "a" : "1", "b" : [ 2, 3 ]}
● $where
即可执行任务javascript作为查询的一部分。$where的值可以是function、也可以是字符串等等。
db.C.find({"$where":function(){return this.a == "1"}})与db.C.find({"$where":"this.a == '1'"}})注意:采用$where子句查询在速度上较常规查询慢的多。因文档需要从BSON转换成javascript对象,然后通过"$where"的表达式来运行。
不用利用索引。可用常规查询做前置过滤,配置"$where"查询进行调优,可达到不牺牲性能的要求。
以上是mongodb使用时的一些条件查询关键字,使用的时候不断的去熟悉掌握。
0 0
- mongodb条件查询实现结构化查询语句SQL
- sql查询条件语句
- 实现多条件模糊查询SQL语句
- 实现多条件模糊查询SQL语句
- 多条件查询SQL语句
- SQL多条件查询语句
- Oracle SQL 条件查询语句
- 多条件查询SQL语句
- Sql 时间条件查询语句
- sql多条件查询语句
- SQL 双重条件查询语句
- SQL常用条件查询语句
- sql语句多条件查询
- asp下实现多条件模糊查询SQL语句
- sql语句实现一个输入框下多条件查询
- SQL基本结构化查询语句
- sql语句实现查询
- sql语句实现查询
- linux 修改用户默认shell(转)
- 高并发,大数据
- 【c++】实现一个函数重载
- 黑马程序员-----java----多线程
- Android笔记之使用LayoutInflater创建View
- mongodb条件查询实现结构化查询语句SQL
- iOS app 'The application could not be verified' only on one device
- c++顺序栈的实现
- android 线程池的实现方式
- OpenFire源码学习之十五:插件开发
- 图片缩放时java.lang.IllegalArgumentException: pointerIndex out of range
- 面试小结-那些求职路上的经验分享与感受
- 字符串的一些算法
- oracle数据库使用dgbroker搭建DG以及一些常见的小问题