本文共 2409 字,大约阅读时间需要 8 分钟。
Mongodb的语法操作其实也没什么难度,但是第一次用还是需要花点时间。特此整理下操作的语法。且该语法针对原生的查询语法,不对应程序中的API。
从使用SQL的角度来学习如何对应到Mongodb上的语法上
参考资料:
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;
db.collection.find({age:{$ne:18}}) ;//年龄不等于18 -------等于的话就是 db.collection.find({age:{18}})
语法
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]}});
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.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表示降序
如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:
db.col.find({"title" : {$type : 2}})或db.col.find({"title" : {$type : 'string'}})
其中如上的数字与类型对应如下的表:
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
>db.COLLECTION_NAME.find().limit(NUMBER)
如下skip表示: 先选取指定的limit(number)个数的记录,并从该返回结果中跳过skip(number)指定个数的记录
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
转载地址:http://gbcmf.baihongyu.com/