您的位置:首页 > 数据库 > Mongodb

mongodb-find、分页、排序

2017-07-23 22:26 218 查看
内容全部来自网上的教程,记录下来,以便查询

1、基本操作
命令:db.[documentName].find ({条件},{键指定})

举例: db.persons.find({},{_id:0,name:1,country:1})

注意:默认情况下,显示ID



2、find查询
操作符
含义

  $lt
<

$lte
<=

$gt
>

$gte
>=

$ne
!=

2.1 条件查询

a、查询出年龄在25到27岁之间的学生

db.persons.find({age: {$gte:25,$lte:27},{_id:0,age:1})



b、查询出所有不是韩国籍的学生的数学成绩

db.persons.find({country:{$ne:” Korea”}},{_id:0,m:1})



2.2 包含或不包含

$in或$nin

a、查询国籍是中国或美国的学生信息

db.persons.find({country:{$in:[“USA”,“China”]}})



b、查询国籍不是中国或美国的学生信息

db.persons.find({country:{$nin:[“USA”,“China”]}})



2.3 or查询

$or
a、查询语文成绩大于85或者英语大于90的学生信息

db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1})



2.4 null

把中国国籍的学生上增加新的键sex

db.person.update({country:”China”},{$set:{sex:”m”}},false,true)

a、查询出sex 等于 null的学生

db.persons.find({sex:{$in:[null]}},{country:1})



2.5 正则查询

a、查询出名字中存在”li”的学生的信息

db.persons.find({name:/li/i},{_id:0,name:1}) 



或者:



2.6 $not

$not可以用到任何地方进行取反操作

$not和$nin的区别是$not可以用在任何地方$nin只能用到集合上

a、查询出名字中不存在”li”的学生的信息

db.persons.find({name:{$not:/li/i}},{_id:0,name:1})



2.7 数组查询$all和index应用

a、查询喜欢看MONGOD和JS的学生

db.persons.find({books:{$all:[“MONGOBD”,”JS”]}},{books:1,_id:0})

b、查询第二本书是JAVA的学生信息

db.persons.find({“books.1”:”JAVA”})



2.8 查询指定长度数组$size它不能与比较查询符一起使用

a、查询喜欢的书籍数量是4本的学生

        db.persons.find({books:{$size:4}},{_id:0,books:1})



b、 查询出喜欢的书籍数量大于3本的学生

c、利用shell查询出Jim喜欢看的书的数量
var persons = db.persons.find({name:"jim"})
while(persons.hasNext()){
obj = persons.next();

        print(obj.books.length)




2.9、$slice

返回文档中指定数组的内部值



3.0、$where

查询年龄大于22岁,喜欢看C++书,在K学校上过学的学生信息

db.persons.find({"$where":function(){
//得到查询结果的每一条文档
var books = this.books;
//得到文档中的school对象
var school = this.school;
//如果年纪>=22
if(this.age > 22){
var php = null;
//遍历书籍
for ( var i = 0; i < books.length; i++) {
if(books[i] == "C++"){
php = books[i];
//如果学校是真
if(school){
for (var j = 0; j < school.length; j++) {
//判断是不是在K上学
if(school[j].school == "K"){
//返回是真
return true;
}
}
break;
}
}
}
}
}})


3、分页

3.1、limit返回指定的数据条数

查询出persons文档中前5条数据



3.2、Skip返回指定数据的跨度

查询出persons文档中5~10条的数据



4、排序
3.3、Sort返回按照年龄排序的数据[1,-1]

1表示正序   -1表示倒序



3.Sort返回按照年龄排序的数据[1,-1]

3.4、Limit和Skip完成分页

三条数据为一页进行分页

第一页:



第二页:



但是skip有性能问题:

可以增加一个date字段,每次查询操作的时候前后台传值完要把上次的最后一个文档的日期保存下来

db.persons.find({date:{$gt:日期数值}}).limit(3)

5、游标
3.5、利用游标遍历查询数据

var  persons = db.persons.find();

while(persons.hasNext()){
obj = persons.next();
print(obj.name)

 } 



3.6、.游标几个销毁条件

    1.客户端发来信息叫他销毁

    2.游标迭代完毕

    3.默认游标超过10分钟没用也会别清除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb