数据操作前,需要先开启MongoDB服务,并建立链接。
开启服务
mongod
建立链接
mongo
先向集合中添加一些数据,为下面查询数据做好铺垫。
demo1.js
var workmate1 = {
name: 'JSPang',
age: 33,
sex: 1,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
skillThree: 'PHP'
},
regeditTime: new Date(),
interest: []
}
var workmate2 = {
name: 'ShengLei',
age: 31,
sex: 1,
job: 'JAVA后端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'J2EE',
skillThree: 'PPT'
},
regeditTime: new Date(),
interest: []
}
var workmate3 = {
name: 'MinJie',
age: 18,
sex: 0,
job: 'UI',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'UI',
skillThree: 'PPT'
},
regeditTime: new Date(),
interest: []
}
var workmate4 = {
name: 'XiaoWang',
age: 25,
sex: 1,
job: 'UI',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'UI',
skillThree: 'PPT'
},
regeditTime: new Date(),
interest: []
}
var workmate5 = {
name: 'LiangPeng',
age: 28,
sex: 1,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
},
regeditTime: new Date(),
interest: []
}
var workmate6 = {
name: 'HouFei',
age: 25,
sex: 0,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
},
regeditTime: new Date(),
interest: []
}
var workmate7 = {
name: 'LiuYan',
age: 35,
sex: 0,
job: '美工',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'CAD',
},
regeditTime: new Date(),
interest: []
}
var workmate8 = {
name: 'DingLu',
age: 20,
sex: 0,
job: '美工',
skill: {
skillOne: 'PhotoShop',
skillTwo: 'CAD',
},
regeditTime: new Date(),
interest: []
}
var workmate9 = {
name: 'JiaPeng',
age: 29,
sex: 1,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
skillThree: 'PHP'
},
regeditTime: new Date(),
interest: []
}
var workmate10 = {
name: 'LiJia',
age: 26,
sex: 0,
job: '前端',
skill: {
skillOne: 'HTML+CSS',
skillTwo: 'JavaScript',
skillThree: 'PHP'
},
regeditTime: new Date(),
interest: []
}
var db = connect('company');
var workmateArray = [workmate1, workmate2, workmate3, workmate4, workmate5, workmate6, workmate7, workmate8, workmate9, workmate10];
db.workmate.insert(workmateArray);
在vscode终端中执行 load('./demo1.js') 即可将上面的数据插入到数据库名称为company,名称为workmate的集合中。
实例一:查询出skillOne为HTML+CSS的name和skillOne字段信息:

db.workmate.find({ "skill.skillOne": "HTML+CSS" }, { name: true, "skill.skillOne": true, "_id": false })
执行结果:
true(1)表示查询该字段,false(0)表示不查询该字段。
实例二:查询出年龄在25-30之间的数据(包含25和30)
db.workmate.find({ age: { $gte: 25, $lte: 30 } }, { name: true, age: true, "_id": false })
执行结果:
这里使用到了大小判断的关键字:
小于($lt):英文全称less-than
小于等于($lte):英文全称less-than-equal
大于($gt):英文全称greater-than
大于等于($gte):英文全称greater-than-equal
不等于($ne):英文全称not-equal
实例三:查找注册日期大于2021年8月1日的数据:
var findData = new Date('01/08/2021');
db.workmate.find({ regeditTime: { $gt: findData } }, { name: true, regeditTime: true, "_id": false })
先声明一个日期的变量,在查找时将变量传入进去,进行查询。
执行结果:
实例四:查找年龄在25, 30, 33的数据(类似于关系型数据库的in查询):
db.workmate.find({ age: { $in: [25, 30, 33] } }, { name: 1, age: 1, _id: 0 })
执行结果:
$in修饰符查询数据在某个范围的数据。
实例四:查找年龄不在25, 30, 33的数据(类似于关系型数据库的not in查询):
db.workmate.find({ age: { $nin: [25, 30, 33] } }, { name: 1, age: 1, _id: 0 })
执行结果:
$nin修饰符查询数据不在某个范围的数据。
实例五:查找年龄大于等于30 或者 会PHP的:
db.workmate.find({ $or: [{ age: { $gte: 30 } }, { "skill.skillThree": "PHP" }] }, { name: 1, age: 1, "skill.skillThree": 1, _id: 0 })
执行结果:
$or修饰符,它用来查询多个键值的情况(类似于关系型数据库中的or)。
实例六:查找年龄大于等于30 并且 会PHP的:
db.workmate.find({ $and: [{ age: { $gte: 30 } }, { "skill.skillThree": "PHP" }] }, { name: 1, age: 1, "skill.skillThree": 1, _id: 0 })
执行结果:
$and修饰符,用来查找几个key值都满足的情况(类似于关系型数据库中的and)
实例七:查找年龄不在20-30范围内的记录:
db.workmate.find({ age: { $not: { $gte: 20, $lte: 30 } } }, { name: 1, age: 1, "skill.skillThree": 1, _id: 0 })
执行结果:
$not修饰符,它用来查询除条件之外的值。