设为首页 收藏本站
查看: 1105|回复: 0

[经验分享] MongoDB Query and Projection Operators

[复制链接]

尚未签到

发表于 2017-12-15 19:22:35 | 显示全部楼层 |阅读模式
  最近在学习MongoDB University的课程中关于CRUD部分的内容,课程结束后查阅了MongoDB的手册,将其中关于Query和Projection和部分总结一下。
  Query Selector
  MongoDB中的查询选择器主要包括Comparison、Logical、Element、Evaluation、Geospatial、Array、Bitwise和Comments几类。
  1)Comparison
  主要包括$eq (=)、$gt (>)、$gte (>=)、$lt (<)、$lte (<=)、$ne (!=),以及$in (匹配对应的值是否包含在一个指定数组中)、$nin (指定的元素不包含在指定的数组中)。各种选择器可以组合进行查询,如下:
  

db.movieDetails.find({ runtime: { $gt: 90 } }).count()  

  
db.movieDetails.find({ runtime: { $gt:
90, $lt: 120 } }).count()  

  
db.movieDetails.find({
"tomato.meter": { $gte: 95 }, runtime: { $gt: 180 } })  

  
db.movieDetails.find({ rated: { $ne:
"UNRATED" } }).count()  

  
db.movieDetails.find({ rated: { $
in: ["G", "PG"] } }).pretty()  

  2)Logical
  主要包括$or (||)、$and (&&)、$not (!)、$nor(匹配返回的是不符合所有查询条件的文档),如下:
  

db.movieDetails.find({ $or : [ { "tomato.meter": { $gt: 99 } },  {
"metacritic": { $gt: 95 } } ] })  

  

  
db.movieDetails.find({ $and : [ {
"metacritic": { $ne: 100 } },  {
"metacritic" { $exists: true } } ] })  

  3)Element
  主要包括$exists (是否存在)、$type (BSON类型的字符串别名) 两种,如下:
  

db.moviesDetails.find({ "tomato.meter": { $exists: true } })  
db.moviesScratch.find({ _id: { $type:
"string" } })  

  4)Evaluation
  主要包括$mod、$regex、$text和$where几类。
  $mod: 取模运算,需要提供一个包含除数和取模后的结果两个元素的数组,注意这里必须提供两个元素,不然会报错:
  

db.inventory.find({ qty: { $mod: [4, 0] } })  

  如上,需要从数据库取出qty字段的值能够被4整除的文档。
  $regex: 提供一个正则表达式来进行匹配,查找符合条件的文档:
  

db.movieDetails.find({ "awards.text": { $regex: /^Won.*/ } }).pretty()  

  $text: 对指定的文本进行搜索,具体格式如下:
  

{  $text: {
  $search:
< string > , //  需要搜索的字符串  $language: < string > , //  语言,可选
  $caseSensitive: < boolean > , //  是否区分大小写,可选,默认为false
  $diacriticSensitive: < boolean > //  是否区分变音符大小写,可选,默认为false
  
    }
  
}
  

  $where:提供一个JavaScript表达式或函数来进行匹配搜索
  5)Geospatial
  这部分暂时没用到,稍后补充。主要是关于地理信息相关的查询。
  6)Array
  $all:匹配的元素必须包含数组的全部内容
  $elemMatch:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424475-1-1.html 上篇帖子: MongoDB注册Windows服务启动 下篇帖子: 【转载】MongoDB集群和实战详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表