MongoDB查询语法

php中文网
发布: 2016-06-07 17:37:34
原创
1390人浏览过

mongoDb是非关系型数据库,用习惯了mssql,mysql等数据库的需要转换一下思维 mongoDb存的是与js的json结构一样的文档,表中的每一条记录都可以结构不同 1,大于,小于,大于等于,小于等于 $gt 大于 $lt 小于 $gte 大于或等于 = $lte 小于等于 = 示例 db.coll

mongodb是非关系型数据库,用习惯了mssql,mysql等数据库的需要转换一下思维

mongoDb存的是与js的json结构一样的文档,表中的每一条记录都可以结构不同

 

1,大于,小于,大于等于,小于等于

$gt 大于   >

$lt 小于    

$gte 大于或等于  >=

$lte  小于等于    

示例

db.collection.find({age:{$gt:18}});  //年龄大于18岁,不包含18岁

SQL:SELECT * FROM Collection WHERE age>18

 

db.collection.find({age:{$lt:25}});  //年龄小于25岁,不包含25岁

SQL:SELECT * FROM Collection WHERE age

 

db.collection.find({age:{$gte:18}});//年龄大于等于18岁的,包含18岁

SQL:SELECT * FROM Collection WHERE age >=18

 

db.collection.find({age:{$lte:25}});//年龄小于等于25岁的,包含25岁

SQL:SELECT * FROM Collection WHERE age

 

也可以将两个条件合并,如下

db.collection.find({age:{$gt:18,$lt:25}}) ;//18

 

2,不等于

$ne 不等于 noe equals

db.collection.find({age:{$ne:18}})  ;//年龄不等于18

 

3,in,not in

$in,$nin


语法

db.collection.find({field:{$in:array}});

db.collection.find({field:{$nin:array}});

示例:

db.collection.find({id:{$in:[1,2,3,4]}})

SKU组合查询算法
SKU组合查询算法

SKU组合查询算法

SKU组合查询算法 39
查看详情 SKU组合查询算法

db.collection.find({id:{$nin:[1,2,3,4]}});

 

4,$exists 验证一个元素是否存在

这个语法有点绕

db.collection.find({title:{$exists:true}});  //如果记录中有包含title属性的全部返回

db.collection.find({title:{$exists:false}}); //如果记录中有包含title属性的全部不返回,不包含title属性的全部返回

 

5,正则表达式

mongo支持正则表达式,,如:

db.customers.find( { name : /acme.*corp/i } ); // 后面的i的意思是区分大小写

支持正则表达式查询让mongDb具有相当强大的查询功能,不过同时需要开发者比较了解正则表达式

 

6  查询数据内的值

下面的查询是查询colors内red的记录,如果colors元素是一个数据,数据库将遍历这个数组的元素来查询。db.things.find( { colors : "red" } );

7 $elemMatch

如果对象有一个元素是数组,那么$elemMatch可以匹配内数组内的元素:

> t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } ) 
{ "_id" : ObjectId("4b5783300334000000000aa9"), 
"x" : [ { "a" : 1, "b" : 3 }, 7, { "b" : 99 }, { "a" : 11 } ]
}$elemMatch : { a : 1, b : { $gt : 1 } } 所有的条件都要匹配上才行。

注意,上面的语句和下面是不一样的。

> t.find( { "x.a" : 1, "x.b" : { $gt : 1 } } )
$elemMatch是匹配{ "a" : 1, "b" : 3 },而后面一句是匹配{ "b" : 99 }, { "a" : 11 } 

 

8  查询嵌入对象的值

db.postings.find( { "author.name" : "joe" } );

注意用法是author.name,用一个点就行了。更详细的可以看这个链接: dot notation

举个例子:

> db.blog.save({ title : "My First Post", author: {name : "Jane", id : 1}})

如果我们要查询 authors name 是Jane的, 我们可以这样:

> db.blog.findOne({"author.name" : "Jane"})

如果不用点,那就需要用下面这句才能匹配:

db.blog.findOne({"author" : {"name" : "Jane", "id" : 1}})

下面这句:

db.blog.findOne({"author" : {"name" : "Jane"}})

是不能匹配的,因为mongodb对于子对象,他是精确匹配。

 

9 元操作符 $not 取反

如:

db.customers.find( { name : { $not : /acme.*corp/i } } );db.things.find( { a : { $not : { $mod : [ 10 , 1 ] } } } ); 

 

以上是常用的查询语法,下一篇将介绍复合查询

最好的文档还是官方文档,英文好的可以自己看看

+operations+in+query+expressions

 

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号