博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongodb的语法
阅读量:2068 次
发布时间:2019-04-29

本文共 2409 字,大约阅读时间需要 8 分钟。

序言

      Mongodb的语法操作其实也没什么难度,但是第一次用还是需要花点时间。特此整理下操作的语法。且该语法针对原生的查询语法,不对应程序中的API。

     从使用SQL的角度来学习如何对应到Mongodb上的语法上

 

参考资料:

 

基本语法

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

  • $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<25

 

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<=25

 

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

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

 

不等于

$ne 不等于 noe equals

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

 

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]}})

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

 

 

文档中是否存在某个属性

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

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

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

 

正则表达式----适合解决复杂查询

mongo支持正则表达式,如:

db.customers.find( { name : /acme.*corp/i } ); // 后面的i的意思是区分大小写---------- // 之间的就是正则表达式。

 

 

根据嵌入文档的值进行查询

db.postings.find( { "author.name" : "joe" } );     注意用法是author.name,用一个点就行了。-------------------------这里author 属性里面是个嵌入文档,该文档还有name的属性

举个例子:

> 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对于子对象,他是精确匹配。

 

排序

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

db.COLLECTION_NAME.find().sort({KEY:1})            -----------key为文档中需要排序的属性名称,1表示升序,-1表示降序

 

 

查找文档中某个属性类型为String或者Double的集合----$type 操作符

如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:

db.col.find({"title" : {$type : 2}})或db.col.find({"title" : {$type : 'string'}})

其中如上的数字与类型对应如下的表:

 

 

MongoDB Limit与Skip方法

MongoDB Limit() 方法

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

>db.COLLECTION_NAME.find().limit(NUMBER)

MongoDB Skip() 方法

如下skip表示: 先选取指定的limit(number)个数的记录,并从该返回结果中跳过skip(number)指定个数的记录

>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

 

Mongodb的数据库备份与恢复

 

转载地址:http://gbcmf.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-19》543.二叉树的直径
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-26》15.三数之和
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-40》64.最小路径和
查看>>
Leetcode C++《热题 Hot 100-41》75.颜色分类
查看>>
Leetcode C++《热题 Hot 100-42》78.子集
查看>>
Leetcode C++《热题 Hot 100-43》94.二叉树的中序遍历
查看>>
Leetcode C++ 《第175场周赛-1 》5332.检查整数及其两倍数是否存在
查看>>
Leetcode C++ 《第175场周赛-2 》5333.制造字母异位词的最小步骤数
查看>>
Leetcode C++ 《第175场周赛-3》1348. 推文计数
查看>>
Leetcode C++《热题 Hot 100-44》102.二叉树的层次遍历
查看>>
Leetcode C++《热题 Hot 100-45》338.比特位计数
查看>>
读书摘要系列之《kubernetes权威指南·第四版》第一章:kubernetes入门
查看>>
Leetcode C++《热题 Hot 100-46》739.每日温度
查看>>