Mongo数据库操作(五)

造数据
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})
查询条件
比较操作符
$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})
or查询
查询语文成绩大于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})
$not的使用
   $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})

查询指定长度数组$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查询
查询出jim喜欢看的书籍的数量
 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}})
准备工作
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"}}})
$where查询
查询年龄大于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;
    }
   }
  } 
 }
}})
limit返回指定的数据条数
查询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)
sort返回按照面临排序的数据 1正序  -1倒序
返回按照age排序的结果
db.persons.find({},{_id:0,name:1,age:1}).limit(5).skip(5).sort({age:1})

猜你喜欢

转载自blog.csdn.net/qq_32367137/article/details/79875861