MongoDB_05之查询

1.返回指定键的文档
  db.[documentName].find({条件},{指定的键})
  例如:db.persons.find({},{name:1,age:1,_id:0})  //查询name=1,age=1,不显示_id的所有文档名为persons的数据,即要的字段值设为1,不想要的字段值设为0
2.查询条件中的比较操作符
  $lt 小于
  $lte 小于等于
  $gt 大于
  $gte 大于等于
  $ne 不等于
例如:
1.查询年龄在22-27之间的人?
  查询条件可以这样写 {age:{$gte:22,$lte:27}}  //or的关系,22-27是写在一个对象中
  db.persons.find({age:{$gte:25,$lte:27}},{_id:0,age:1}) //id不显示,只显示年龄
2.查询出所有不是韩国国籍的学生的数学成绩
  db.persons.find({country:{$ne:"Korea"}},{_id:0,m:1}) //先查询出学生的数学成绩,然后在用条件过滤
3.包含($in),不包含($nin),只能作用于数组,而不能作用于其他对象
  查询国籍是中国或美国的学生信息
  db.persons.find({country:{$in:["China","America"]}},{_id:0,country:1})
  查询出国籍不是中国或美国的学生信息
  db.persons.find({country:{$nin:["China","America"]}},{_id:0,country:1})
4.or($or)查询,应该把查询条件放在一个数组当中
  查询出语文成绩大于85或英语成绩大于90的学生信息
  db.persons.find({$or:[{chinese:{$gte:85}},{english:{$gte:90}}]},{_id:0,chinese:1,english:1})
5.null 有,但是是空
  把中国国籍的学生增加一个键sex ,$set(有是修改,没有是追加)
  db.persons.update({country:"China"},{$set:{sex:"male"}})
  查询出sex等于null的学生
  db.persons.find({sex:{$in:[null]}},{_id:0,name:1,sex:1})
6.正则查询
  查询出名字中存在li的学生的信息
  db.persons.find({name:/li/i},{_id:0,name:1})
7.$not可以用于任何地方取反操作
  查询出名字中不存在li的学生的信息
  db.persons.find(name:{$not:/li/li},{_id:0,name:1})
  区别:$not与$nin,$not可以用于任何地方取反,而$nin只能用于集合上
8.数组查询$all与index的应用
  查询出喜欢看MONGODB和JS的学生
  db.persons.find({books:{$all:["MONGODB","JS"]}},{_id:0,name:1})
  查询出第二本书是JAVA的学生信息
  db.persons.find({"books:1":"JAVA"},{_id:0,name:1})
9.查询出指定长度数组,$size不能与比较查询符一起使用(弊端)
  查询出喜欢的书籍数量是4的学生
  db.persons.find({books:{$size:4}},{_id:0,name:1})
10.查询出喜欢书籍的数量大于3的学生
  这个有点小复杂
  第一步:增加字段size
  db.persons.update({},{$set:{size:4},false,true}) //给所有字段增加size字段,值为4
  第二步:改变书籍的更新方式,每次增加书籍的时候size增加1
  db.persons.update({查询器},{$push:{books:"ORACLE"},$inc:{size:1}})
  第三步:利用$gt查询
  db.persons.find({size:{$gt:3}})
11.利用shell查询出Jim喜欢看的书籍的数量
  var persons = db.persons.find{{name:"Jim"}}
  while(persons.hasNext()) {
  obj = persons.next();
  print(obj.books.length)
  }
小结:查询符基本是在花括号里面,更新符基本是在花括号的外面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值