开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统:Mongodb的查询部分字段和按条件查询讲解】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/728/detail/13001
Mongodb的查询部分字段和按条件查询讲解
内容介绍:
一、查询部分字段
二、查询条件
在做查询之前我们先向数据库插入一些数据,在插入之前先删除数据库表persons的以前的数据,然后在插入:
1)删除数据库表 persons
db.persons.drop()
2)将如下数据插入到数据库itcast中的表persons:
db. persons.drop()
true
var personArr = [{
name : "zhangsan",
age: 23,
email : "17161717@qq.com",
c:89,m: 78,e : 99,
country : "china",
books : ["Js","JAVA” , "MONGODB"]
},
{
name : ""linchong",
age: 20,
email:"234681717eqq.com",
c:82,m:38,e:69,
country : "china",
books : [ "Js","PHP","MONGODB""]
},
{
name: "1uzhishen",
age:23,
email:"171615151@qq.com" ,
c:23,m:98,e: 100,
country : "china",
books : [ "3query" , "JAVA", "MONGODB"]
},
……
{
name : "wuyong",
age:32,
email:“17827277@qq.com",
c:76,m:88,e:99,
country : "uSA",
books: [“ct","hibernate","c"j
}]
for(var i=0;i<personArr.length;i++){
db.persons.insert(personArr[i])
}
之后进行查询:
db.persons.find()
{"_id”: ObjectId("5aa8debebaf95f1915073eaf"),"name" : " zhangsan","age”:23,"email":"17161717@qqom","c”:89,”m”: 78,"e" : 99,"country" : "china", "books": [“Js",“JAVA","MKONCODB”]}
{"_id":0bjectId("5aa8debebaf95f1915073eb0"),"nane”:"linchong"," age" : 20,"emai1":"234681717@qq.com" "c”:82,“m”:38,“e”:69,“country”:“china”,“books”:[“JS”,“PHP”,“MNGDB”]}
{"_id" : ObjectId("5aa8debebaf95f1915073eb1"),"name": "1uzhishen",“age: 23,"email”:"171615151@qq.com"c": 23,“m”:98,"e":100,"country": "china","books":[“Jquery"' “"JAVA",“ MONGODB" ] }
{"_id” : Objectid("5a8debebaf9511915073eb2"),"name": " songjiang", " age" : 33, " enaj1":"1781918717@qq.com","c" :89,“m”: 78,"e" : 99," country": " china", "books" : [ "mysql","JAVA",“MIONGODB"]}
{"_id" : ObjectId("5aa8debebaf95f1915073eb3"), " mnane": "wusong , " age”: 28, " email”:“"123456@qq.com " c": 76, "h”: 32,"e” : 99," country" :"Korea","books" : [ “C++","JAVA",“C"]}
{"_id":ObjectId("5aa8debebaf95f1915073eb4"),"name": likui","age" : 43, "email”:"234567@qq.con" "c”:23,"m":46,“e”:10,“country”:“USA”,“books”:[“jsp”,“JAVA”,“MNGDB”]}
{"_id" : ObjectId("5aa8debebaf95f1915073eb5*7),,"nane" : " shigian","age": 23," email" :"8171717@qq.com","c": 19, "m" : 88,“e” : 99,"country": "china",“books" : [ "mysql","oracle",“MONGODB"]}
{"_id" : 0biectId("5aa8debebaf9511915073eb6"),"name" : "wuyong", " age":32, " email”:"17827277@qq.com , " "c”: 76,"m":88,"e”:99,"country":"USA",“books" : [ “C++","hibernate",“C”]}
一、查询部分字段
需求:查询上述persons表中的name,country,age字段
在关系型数据库中,直接select+就可以,接下来讲述在Mongodb中如何查询。
1.指定返回的键
db.[collectionName].find({条件},{键指定})
数据准备→persons.json
(1)查询出所有数据的指定键(name ,age ,country)
db.persons.find({},{}iname:1.age:1,country:1,_id:0})
分析:由于这里只想查询name,country,age字段,所以第一个参数,条件可以不用书写,表示空对象,表示查询全部。
第二个参数表示要查询谁,如果不想查询谁就设置为0,查询谁,就设置为1。
注意:如果不想查询id,就写id:0.如果不写,会默认查询。
具体的代码如下所示:
db. persons.find({}, {name : 1, age:1, country:1})
{"_id" : ObjectId("5aa8de'ebaf95f1915073eaf" ),"name": "znangsan","age”: 23,"coumtry": "china"}
{"_id" :ObjectId("5aa8de'ebaf95f1915073ea0" ),"name": "lichong","age" : 20, " country": "china"}
{"_id" :ObjectId("5aa8de'ebaf95f1915073ea1" ) ,"name": "luzhishen","age" : 23, " country": "china"}
{"_id" :ObjectId("5aa8de'ebaf95f1915073ea2" ) ,"name": "songjiang","age" : 33, " country": "china"}
{"_id" :ObjectId("5aa8de'ebaf95f1915073ea3" ) ,"name": "wusong","age" : 28," country": "Korea"}
{"_id" :ObjectId("5aa8de'ebaf95f1915073ea4" ) ,"name": "likui","age" : 43, " country": " USA "}
{"_id" :ObjectId("5aa8de'ebaf95f1915073ea5" ) ,"name": "shiqian","age" : 23, " country": "china"}
{"_id" :ObjectId("5aa8de'ebaf95f1915073ea6" ) ,"name": "wuyong","age" : 32, " country": " USA "}
如果不写id:0,会默认查询id;不想查询id,写id:0
db. persons.find({}, {name : 1, age:1, country:1,_id:0})
{"name: znangsan","age”: 23,"coumtry": "china"}
{"name": "lichong","age" : 20, " country": "china"}
{"name": "luzhishen","age" : 23, " country": "china"}
{"name": "songjiang","age" : 33, " country": "china"}
{"name": "wusong","age" : 28," country": " Korea "}
{"name": "likui","age" : 43, " country": "USA"}
{"name": "shiqian","age" : 23, " country": "china"}
{"name": "wuyong","age" : 32, " country": "USA"}
二、查询条件
比较操作符
$lt |
< |
{age:{$gte:22,Slte:27}} |
$Ite |
<= |
|
$gt |
> |
|
$gte |
>= |
|
$ne |
!= |
{age:{$ne:26}} |
{age:{$gte:22,Slte:27}} 里是并且的关系,如果是或者,写or。
需求:查询年龄在30到45之间的学生
分析:语法格式:db.persons.find({age:{gte .30,lte:45}},{_id:0,
name:1,age:1})
具体代码如下:
db.persons.find({age:{$gte .30,$lte:45}},{_id:0,name:1,age:1})
{"name": "songjiang","age" : 33, " country": "china"}
{"name": "likui","age" : 43, " country": "USA"}
{"name": "wuyong","age" : 32, " country": "USA"}
1.包含或不包含
$in/$nin
例:查询国籍是中国或美国的学生信息
db.persons.find({country:{$in:["USA","China"]}})
说明:关于包含或者不包含,要求后面必须是数组。
代码如下所示:
db.persons.find({country{$in:["USA","china"]}},{_id:0,name:1,age:1})
//查询国家国籍是USA或中国的人年龄和姓名
{"name: znangsan","age”: 23}
{"name": "lichong","age" : 20 }
{"name": "luzhishen","age" : 23}
{"name": "songjiang","age" : 33}
{"name": "likui","age" : 43}
{"name": "shiqian","age" : 23}
{"name": "wuyong","age" : 32 }