造数据
var persons = [{
name:"jim",
age:25,
email:"[email protected]",
c:89,m:96,e:87,
country:"USA",
books:["JS","C++","EXTJS","MONGODB"]
},
{
name:"tom",
age:25,
email:"[email protected]",
c:75,m:66,e:97,
country:"USA",
books:["PHP","JAVA","EXTJS","C++"]
},
{
name:"lili",
age:26,
email:"[email protected]",
c:75,m:63,e:97,
country:"USA",
books:["JS","JAVA","C#","MONGODB"]
},
{
name:"zhangsan",
age:27,
email:"[email protected]",
c:89,m:86,e:67,
country:"China",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lisi",
age:26,
email:"[email protected]",
c:53,m:96,e:83,
country:"China",
books:["JS","C#","PHP","MONGODB"]
},
{
name:"wangwu",
age:27,
email:"[email protected]",
c:45,m:65,e:99,
country:"China",
books:["JS","JAVA","C++","MONGODB"]
},
{
name:"zhaoliu",
age:27,
email:"[email protected]",
c:99,m:96,e:97,
country:"China",
books:["JS","JAVA","EXTJS","PHP"]
},
{
name:"piaoyingjun",
age:26,
email:"[email protected]",
c:39,m:54,e:53,
country:"Korea",
books:["JS","C#","EXTJS","MONGODB"]
},
{
name:"lizhenxian",
age:27,
email:"[email protected]",
c:35,m:56,e:47,
country:"Korea",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lixiaoli",
age:21,
email:"[email protected]",
c:36,m:86,e:32,
country:"Korea",
books:["JS","JAVA","PHP","MONGODB"]
},
{
name:"zhangsuying",
age:22,
email:"[email protected]",
c:45,m:63,e:77,
country:"Korea",
books:["JS","JAVA","C#","MONGODB"]
}]
for(var i = 0;i<persons.length;i++){
db.persons.insert(persons[i])
}
var persons = db.persons.find({name:"jim"})
while(persons.hasNext()){
obj = persons.next();
print(obj.books.length)
}
var persons = [{
name:"jim",
age:25,
email:"[email protected]",
c:89,m:96,e:87,
country:"USA",
books:["JS","C++","EXTJS","MONGODB"]
},
{
name:"tom",
age:25,
email:"[email protected]",
c:75,m:66,e:97,
country:"USA",
books:["PHP","JAVA","EXTJS","C++"]
},
{
name:"lili",
age:26,
email:"[email protected]",
c:75,m:63,e:97,
country:"USA",
books:["JS","JAVA","C#","MONGODB"]
},
{
name:"zhangsan",
age:27,
email:"[email protected]",
c:89,m:86,e:67,
country:"China",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lisi",
age:26,
email:"[email protected]",
c:53,m:96,e:83,
country:"China",
books:["JS","C#","PHP","MONGODB"]
},
{
name:"wangwu",
age:27,
email:"[email protected]",
c:45,m:65,e:99,
country:"China",
books:["JS","JAVA","C++","MONGODB"]
},
{
name:"zhaoliu",
age:27,
email:"[email protected]",
c:99,m:96,e:97,
country:"China",
books:["JS","JAVA","EXTJS","PHP"]
},
{
name:"piaoyingjun",
age:26,
email:"[email protected]",
c:39,m:54,e:53,
country:"Korea",
books:["JS","C#","EXTJS","MONGODB"]
},
{
name:"lizhenxian",
age:27,
email:"[email protected]",
c:35,m:56,e:47,
country:"Korea",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lixiaoli",
age:21,
email:"[email protected]",
c:36,m:86,e:32,
country:"Korea",
books:["JS","JAVA","PHP","MONGODB"]
},
{
name:"zhangsuying",
age:22,
email:"[email protected]",
c:45,m:63,e:77,
country:"Korea",
books:["JS","JAVA","C#","MONGODB"]
}]
for(var i = 0;i<persons.length;i++){
db.persons.insert(persons[i])
}
var persons = db.persons.find({name:"jim"})
while(persons.hasNext()){
obj = persons.next();
print(obj.books.length)
}
数据库的查询
查询指定的字段
//查询条件为全部,指定要查询的字段,若查询为1,不查询为0
db.persons.find({},{_id:0,name:1,country:1})
查询指定的字段
//查询条件为全部,指定要查询的字段,若查询为1,不查询为0
db.persons.find({},{_id:0,name:1,country:1})
查询条件
比较操作符
$lt:<
$lte:<=
$gt:>
$gte:>=
$ne:!=
例如:查询29>=age>=27
db.persons.find({age:{$gte:27,$lte:29}},{_id:0,name:1,age:1})
查询不是韩国的数学成绩
db.persons.find({country:{$ne:"Korea"}},{m:1,country:1})
比较操作符
$lt:<
$lte:<=
$gt:>
$gte:>=
$ne:!=
例如:查询29>=age>=27
db.persons.find({age:{$gte:27,$lte:29}},{_id:0,name:1,age:1})
查询不是韩国的数学成绩
db.persons.find({country:{$ne:"Korea"}},{m:1,country:1})
包含与不包含//作用于数组
包含$in
不包含$nin
查询美国与中国的学生
db.persons.find({country:{$in:["USA","China"]}},{_id:0,name:1,country:1})
查询不是中国或美国的学生
db.persons.find({country:{$nin:["USA","China"]}},{_id:0,name:1,country:1})
包含$in
不包含$nin
查询美国与中国的学生
db.persons.find({country:{$in:["USA","China"]}},{_id:0,name:1,country:1})
查询不是中国或美国的学生
db.persons.find({country:{$nin:["USA","China"]}},{_id:0,name:1,country:1})
or查询
查询语文成绩大于85或者英语成绩大于90的学生名字
db.persons.find({$or:[{c:{$gt:85}},{e:{$lt:90}}]},{_id:0,name:1,c:1,e:1})
查询语文成绩大于85或者英语成绩大于90的学生名字
db.persons.find({$or:[{c:{$gt:85}},{e:{$lt:90}}]},{_id:0,name:1,c:1,e:1})
null
把中国国籍的学生上增加新的键sex
db.persons.update({country:"China"},{$set:{sex:"m"}},false,true)
查询出sex等于null的学生
db.persons.find({sex:{$in:[null]}},{_id:0,name:1,country:1,sex:1})
正则查询
查询出名字存在“li”的学生信息
db.persons.find({name:/li/i},{_id:0,name:1,country:1,sex:1})
把中国国籍的学生上增加新的键sex
db.persons.update({country:"China"},{$set:{sex:"m"}},false,true)
查询出sex等于null的学生
db.persons.find({sex:{$in:[null]}},{_id:0,name:1,country:1,sex:1})
正则查询
查询出名字存在“li”的学生信息
db.persons.find({name:/li/i},{_id:0,name:1,country:1,sex:1})
$not的使用
$not可以用到任何地方进行取反操作
查询名字中不存在“li”的学生的信息
db.persons.find({name:{$not:/li/i}},{_id:0,name:1,country:1,sex:1})
$not可以用到任何地方进行取反操作
查询名字中不存在“li”的学生的信息
db.persons.find({name:{$not:/li/i}},{_id:0,name:1,country:1,sex:1})
数组查询$all和index应用
查询喜欢看mongod和js的学生
db.persons.find({books:{$all:["MONGODB","JS"]}},{books:1,_id:0})
查询第二本书是Java的学习信息
db.persons.find({"books.1":"JAVA"},{books:1,_id:0})
查询喜欢看mongod和js的学生
db.persons.find({books:{$all:["MONGODB","JS"]}},{books:1,_id:0})
查询第二本书是Java的学习信息
db.persons.find({"books.1":"JAVA"},{books:1,_id:0})
查询指定长度数组$size,它不能与比较查询符一起使用(这是弊端)
db.persons.find({books:{$size:4}},{books:1,_id:0})
查询出喜欢的书籍数量大于3本的学生
1、增加字段size
db.persons.update({},{$set:{size:4}},false,true)
2、改变书籍的更新方式,每次增加书籍的时候size怎加1
db.persons.update({查询器},{$push:{books:"ORACLE"},$inc:{size:1}})
3、利用$gt查询
1、增加字段size
db.persons.update({},{$set:{size:4}},false,true)
2、改变书籍的更新方式,每次增加书籍的时候size怎加1
db.persons.update({查询器},{$push:{books:"ORACLE"},$inc:{size:1}})
3、利用$gt查询
查询出jim喜欢看的书籍的数量
var persons=db.persons.find({name:"jim"})//返回的是游标
循环游标
while(persons.hasnext()){
obj=persons.next();
print(obj.books.length)
}
var persons=db.persons.find({name:"jim"})//返回的是游标
循环游标
while(persons.hasnext()){
obj=persons.next();
print(obj.books.length)
}
$slice操作符返回文档中指定数组的内部值
查询出jim书架中第二本到第四本书
db.persons.find({name:"jim"},{books:{$slice:[1,3]}})
查询出jim书架中的最后一本书
db.persons.find({name:"jim"},{books:{$slice:-1}})
查询出jim书架中第二本到第四本书
db.persons.find({name:"jim"},{books:{$slice:[1,3]}})
查询出jim书架中的最后一本书
db.persons.find({name:"jim"},{books:{$slice:-1}})
准备工作
var jim = [{
school :"K",
score:"A"
},{
school :"L",
score:"B"
},{
school :"J",
score:"A+"
}]
db.persons.update({name:"jim"},{$set:{school:jim}})
var jim = [{
school :"K",
score:"A"
},{
school :"L",
score:"B"
},{
school :"J",
score:"A+"
}]
db.persons.update({name:"jim"},{$set:{school:jim}})
查询在K上过学,分数为A的学生
db.persons.find({school:{$elemMatch:{school:"K",score:"A"}}})
db.persons.find({school:{$elemMatch:{school:"K",score:"A"}}})
$where查询
查询年龄大于22岁,喜欢看c++书,在k学校上过学的学生信息
查询年龄大于22岁,喜欢看c++书,在k学校上过学的学生信息
db.persons.find({"$where":function(){
var books = this.books;
var school = this.school;
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++) {
if(school[j].school == "K"){
return true;
}
}
break;
}
}
}
}
}})
var school = this.school;
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++) {
if(school[j].school == "K"){
return true;
}
}
break;
}
}
}
}
}})
limit返回指定的数据条数
查询persons中前5条书籍
db.persons.find({},{_id:0,name:1}).limit(5)
查询persons中前5条书籍
db.persons.find({},{_id:0,name:1}).limit(5)
$kip返回指定数据的跨度
查询出persons文档中5-10条数据
db.persons.find({},{_id:0,name:1}).limit(5).skip(5)
查询出persons文档中5-10条数据
db.persons.find({},{_id:0,name:1}).limit(5).skip(5)
sort返回按照面临排序的数据 1正序 -1倒序
返回按照age排序的结果
db.persons.find({},{_id:0,name:1,age:1}).limit(5).skip(5).sort({age:1})
返回按照age排序的结果
db.persons.find({},{_id:0,name:1,age:1}).limit(5).skip(5).sort({age:1})