(1) 使用mongod命令启动 MongoDB服务
mongod –dbpath D:\MongoDB\db
show databases 或 show dbs
(2) 使用数据库
use 数据库名;
(3) 创建集合(相当于关系数据中的表)
db.createCollection({"集合名"})
(4) 插入数据(insert())
语法: db.集合名称.insert( {BSON格式数据})
在集合中增加数组数据:
db.集合名称.insert({"key":["value1","value2"]})
在集合中增加10000个url分别为 ljc-1、ljc-2、ljc-3……的数据:
for(var a=1;a<=10000;a++){
db.集合名称.insert({"url":"ljc-"+a})
}
(5) 查看数据(find())
语法: db.集合名称. find ({})
简单查询:
不显示“_id”:
db.集合名称.find({查询条件},{"_id":0})
运算符: 大于($gt)、小于($lt)、大于等于($gte)、小于等于($lte)、不等于($ne)、等于(key : value的形式)
等于:直接写成bson格式
大于:db.集合名称.find({"key":{"$gt":value}})
不等于(不是):db.集合名称.find({"key":{"$ne":"value"}})
运算符:与($and)、或($or)、非($not、$nor)
查询数值在某区间的信息:
db.集合名称.find({"key":[{"$gte":value},{"$lte":value}]})
或者:
db.集合名称.find({"$or":[
{"key1":{"$gt":value1}},
{"key2":{"$gt":value2}}]
})
并且:
db.集合名称.find({"$and":[
{"key1":{"$lte":value1}},
{"key2":{"$lte":value2}}]
})
运算符:$in 和 $nin
db.集合名称.find({"key":{"$in":["value1","value2","value3"]}})
db.集合名称.find({"key":{"$nin":["value1","value2","value3"]}})
复杂查询:
1)查询姓名带谷字的同学信息
db.集合名称.find({"name": /谷/})
2)查询姓名含有字符A或者a的同学信息
db.集合名称.find({"name": /A/i})
3)按照成绩进行升序排序
db.集合名称.find().sort({"score":1})
4)按成绩降序排序,只显示第一页的5条数据(limit(5))
db.集合名称.find().sort({"socre":-1}).limit(5)
5)按成绩降序排序,5条数据一页(limit(5)),要求只显示第二页的数据(skip(4))
db.集合名称.find().sort({"score":-1}).skip(4).limit(5)
运算符:$all、$size、$slice、$elemMatch
6)查询同时参加语文和数学课程的学生
db.集合名称.find({"course":{$all:["语文", "数学"]}})
7)查询数组中第二个内容为数学的信息
db.集合名称.find({"course":"数学"},{"arr":{"$slice":[0,3]}}))
db.集合名称.find({"course.1":"数学"})
8)查询只参加两门课的学生
db.集合名称.find({"course": {$size:2}})
9)返回年龄为19岁所有学生的信息,但是要求只显示两门参加课程
db.集合名称.find({"age":19},{"course":{"$slice":2}})
10)查询出年龄大于等于19岁,父母有人是局长的学生信息
db.集合名称.find({"$and":[{"age":{"$gte":19}},{"parents":{"$elemMatch":{"job":"局长"}}}]})
运算符:$exists 判断某个字段是否存在,如果设置为true表示存在
11)查询具有parents成员的数据
db.集合名称.find({"parents":{"$exists":true}})
12)查询不具有course成员的数据
db.集合名称.find({"course":{"$exists":false}})
MongoDB聚合操作:
(1)查询每个职位的人数
db.emp.aggregate([{"$group" : {"_id": "$job","job_count":{"$sum": 1}}}])
(2)查询每个职位的总工资
db.emp.aggregate([{"$group" : {"_id": "$job","job_sal":{"$sum": "$salary"}}}])
(3)查询每个职位的总工资 ,平均工资
db.emp.aggregate([{"$group":{"_id" : "$job",
"job_sal" : {"$sum": "$salary"},
"job_avg" : {"$avg": "$salary"}}
}])
(4)查询每个职位的最高工资 ,最低工资
db.emp.aggregate([{"$group":{"_id" : "$job",
"max_sal" : {"$max" : "$salary"},
"min_sal" : {"$min" : "$salary"}}
}])
(5)查询出每个职位的工资数据
db.emp.aggregate([{"$group":{"_id" : "$job",
"sal_data" : {"$push" : "$salary"}
}}])
(6)查询每个职位的人员
db.emp.aggregate([{"$group":{"_id" : "$job",
"sal_data" : {"$push" : "$name"}}}
])
(7)查询每个职位的人员 只保留第一个名称
db.emp.aggregate([{"$group":{"_id" : "$job",
"sal_data" : {"$first" : "$name"}}}
])
(8)查询每个职位的人员 只保留最后一个名称
db.emp.aggregate([{"$group":{"_id" : "$job",
"sal_data" : {"$last" : "$name"}}}
])
(9)只显示name,job成员,不显示“_id”
db.emp.aggregate([{"$project":{"_id" : 0,"name" : 1,"job" : 1}}])
(10)查询每个人员的年薪,显示name,job和年薪,不显示“_id”
db.emp.aggregate([{"$project":{"_id" : 0,"name" : 1,"job" : 1,
"年薪" : {"$multiply" :["$salary",12]}}}])
(11)找出工资大于2000的所有雇员姓名、年龄、工资
db.emp.aggregate([
{"$match" : {"salary": {"$gt" : 2000}}},
{"$project":{"name" : 1,"age" :1,"salary" : 1,"_id" : 0}}
])
MongoDB索引:
(1)查看students集合的索引
db.students.getIndexes()
db.students.find()
(2)在age成员上,设置一个降序索引
db.students.createIndex({"age":-1})
(3)查询age等于19岁的数据,并对查询过程在索引上做一个分析
db.students.find({"age":19}).explain()
(4)查询score大于60分的数据,并对查询过程在索引上做一个分析
db.students.find({"score":{"$gt":60}}).explain()
(5)查询age等于19岁 或者 score大于60分的数据,并对查询过程在索引上做一个分析
db.students.find({"$or":[{"age":19},{"score":{"$gt":60}}]}).explain()
(6)创建一个age和score的复合索引,两者均为降序
db.students.createIndex({"age":-1,"score":-1})
(7)删除一个索引
db.students.dropIndex({"age":-1})
(8)删除全部索引
db.students.dropIndexes()
(9)为name创建一个唯一索引
db.students.createIndex({"name":1},{"unique":true})
(10)在phones集合中,为time创建过期索引,升序,10秒过期
db.phones.find()
db.phones.getIndexes()
db.phones.createIndex({"time":1,},{expireAfterSeconds:10})
(11)在shop集合中,为loc设置2d索引
db.shop.find()
db.shop.getIndexes()
db.shop.createIndex({"loc": "2d"})
(12)在shop集合中,查询坐标[11,11]附近最大距离为5范围内的数据
db.shop.find({"loc": {"$near" :[11,11], "$maxDistance": 5}})
(13)在shop集合中,查询坐标[9,9]和[11,11]范围内的数据
db.shop.find({"loc": {"$geoWithin" : {"$box": [[9,9][11,11]]}}})
(14)在shop集合中,查询以坐标[10,10]为圆心,2为半径范围内的数据
db.shop.find({"loc": {"$geoWithin" : {"$center": [[10,10],2]}}})
(6) 增加不规则数据
var 变量={BSON格式数据}
db.集合名称.insert(变量)
(7) 删除数据(remove、delete)
语法: db.集合名称. remove ({删除条件})
删除所有姓名里面带“谷”的信息
db.集合名称.deleteMany({"name":/谷/})
删除姓名带“漓江”的信息,要求只删除一个
db.集合名称.deleteOne({"name":/漓江/})
(8) 更新数据(update())
语法: db.集合名称. update ({更新条件,新值})
更新存在的数据:
db.集合名称.updateMany({"key原":value原},{"$set":{"key更新":value更新}})
db.集合名称.update({"key原":value原},{"$set":{"key更新":value更新}},false,true)
更新不存在的数据:将年龄是30岁的人姓名更新为“不存在”
db.集合名称.update({"age":30},{"$set":{"name":"不存在"}},true,false)
将所有年龄为19岁的成绩一律减少30分,年龄减小1岁
db.集合名称.updateMany({"age":19},{"$inc":{"score":-30,"age":-1}})
db.集合名称.update({"age":19},{"$inc":{"score":-30,"age":-1}},false,true)
将所有年龄是20岁的人的成绩修改为99
db.集合名称.updateMany({"age":20},{"$set":{"score":99}})
db.集合名称.update({"age":20},{"$set":{"score":99}},false,true)
删除“张三”的年龄与成绩信息
db.集合名称.updateMany({"name":"张三"},{"$unset":{"age":1,"score":1}})
db.集合名称.update({"name":"张三"},{"$unset":{"age":1,"score":1}},false,true)
运算符:$push、$pushAll、$addToSet
向“张三”添加课程信息“语文”
db.集合名称.update({"name":"张三"},{"$push":{"course":"语文"}})
向“谷大神-E”里面的课程追加一个“美术”
db.集合名称.update({"name":"谷大神-E"},{"$push":{"course":"美术"}})
向“王五”的信息里面添加多个课程内容:美术、音乐、体育
db.集合名称.update({"name":"王五"},{"$pushAll":{"course":["美术","音乐","体育"]}})
向“王五”的信息添加新的内容:course为舞蹈
db.集合名称.update({"name":"王五"},{"$addToSet":{"course":"舞蹈"}})
运算符: $pop、$pull、$pullAll
删除“王五”的第一个课程
db.集合名称.update({"name":"王五"},{"$pop":{"course":-1}})
删除“王五”的最后一个课程
db.集合名称.update({"name":"王五"},{"$pop":{"course":1}})
删除“王五”的音乐课程信息
db.集合名称.update({"name":"王五"},{"$pull":{"course":"音乐"}})
删除“谷大神-A”的三门课程
db.集合名称.update({"name":"谷大神-A"},{"$pullAll":{"course":["语文","数学","英语"]}})
运算符: $rename
将“张三”name成员名称修改为“姓名”
db.集合名称.update({"name":"张三"},{"$rename":{"name":"姓名"}},false,true)
(9) 删除集合
语法: db.集合名称.drop ()
(10) 删除数据库
db.dropDatabase();它删除的是当前所使用的数据库
mongodb总结
本文详细介绍了MongoDB的基本操作,包括如何启动服务、使用数据库、创建和操作集合、插入与查询数据、执行聚合操作以及建立和管理索引。内容涵盖从简单的数据管理到复杂的数据查询和分析,是MongoDB入门学习的重要参考。
摘要由CSDN通过智能技术生成