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)
}
小结:查询符基本是在花括号里面,更新符基本是在花括号的外面
MongoDB_05之查询
最新推荐文章于 2024-06-23 16:39:49 发布