安装mongodb的步骤: (最新版本)
1) 上官网 找到对应的版本 下载安装(.msi 安装文件)
2) 点击下一步 傻瓜式安装 (compass 可以不勾选)
3) 安装完成 进入安装目录 C:\ Files\MongoDB\Server\4.0\bin
从这个目录 进入 cmd 试一下 mongo命令是否可以使用
输入: mongo (如果可以使用 不会显示不是内部或外部命令)
4) 配置环境变量 (因为 mongo命令 只能在安装目录使用 我们需要它在任何目录都可以使用)
C:\Program Files\MongoDB\Server\4.0\bin
5) 测试是否安装成功
a) win + R 输入cmd 打开命令行
b) 输入: mongo
c) 输入: show dbs
常用数据库命令
1) 显示当前有哪些数据库: show dbs; (数据库里面必须至少有一条数据 才能显示出来)
2) 使用数据库: use 数据库的名字 (如果已经存在 直接使用 如果不存在 会自动创建一个)
3) 检测当前你在哪个数据库里面: db;
4) 显示当前数据库有哪些集合: show collections;
5) 显示当前集合有哪些数据: db.集合名.find()
<--------------- 增加数据 ------------->
1) db.集合名.insert({"key":"value"})
示例: db.H50709.insert({"name":"张三", "age": 18});
2) db.集合名.save({"key":"value"})
示例: db.H50709.save({"name":"李寻欢", "age": 28});
区别: save()方法 和 insert()方法 都可以往数据库里面插入(增加)数据,但是有区别:
save() 方法 如果插入一条已经存在的数据 会 覆盖;
insert() 方法, 如果插入一条已经存在的数据, 会 报错 无法插入;
<--------------- 删除数据 ------------->
1) 删除文档(删除json数据)
a) db.集合名.remove({}) // 删除集合下的所有数据
b) db.集合名,remove({key: value}) // 按条件删除
示例: db.集合名.remove({"age": 18}); // 删除年龄为18岁的所有数据
2) 删除集合
db.集合名.drop();
3) 删除数据库 (在哪个数据库里面运行这个命令 就删除哪个数据库)
db.runCommand({"dropDatabase": 1});
<--------------- 查询数据 ------------->
1) db.集合名.find() // 查找集合下所有数据
2) db.集合名.findOne() // 查找集合下第一条数据
3) db.集合名.find().pretty(); // 查找集合下所有数据, 格式化再显示出来
<--------------- 修改数据 ------------->
1) db.集合名.update({key: value}, {key: value})
// update方法 有两对大括号, 第一对里面 是查找的条件 第二对里面是修改后的 新 内容
// 示例代码:
db.users.update({"name":"张三"}, {"age": 38}) // 修改后 只有第二大括号的内容
db.users.update({"name":"李四"}, {"name":"李四", "age": 38})
db.users.update({"name":"李四"}, {$set: { "age": 98 } }) // 只会改年龄 其他保持不变
高级条件查询命令
语法1:db.collection.find({ "key" : value }) 查找key=value的数据.
例1:查找女歌星。
代码: db.list.find({"sex": "女"});
-------------------------------------------------
语法2: db.collection.find({ "key" : { $gt: value } }) key > value
例2:查找年龄大于53的歌星。
代码: db.list.find({"age": { $gt: 53 }}).pretty();
语法3:db.collection.find({ "key" : { $lt: value } }) key < value
例3:查询年龄小于35岁的歌星。
代码: db.list.find({"age": { $lt: 35 }}).pretty();
语法4:db.collection.find({ "key" : { $gte: value } }) key >= value
例4:查询成绩大于等于95的歌星。
代码: db.list.find({"score": { $gte: 95 }}).pretty();
语法5:db.collection.find({ "key" : { $lte: value } }) key <= value
例5:查询年龄在小于等于32岁的歌星。
代码: db.list.find({"age": { $lte: 32 }}).pretty();
语法6:db.collection.find({ "key" : { $gt: value1 , $lt: value2 } }) value1 < key 例6:查找年龄在30-40岁之间的歌星。 代码: db.list.find({"age": { $gt: 30, $lt: 40 }}).pretty(); ------------------------------------------- 语法7:db.collection.find({ "key" : { $ne: value } }) key <> value 例7:查询外国歌手。 代码: db.list.find({"country": { $ne: "中国" }}).pretty(); 语法8:db.collection.find({ "key" : { $mod : [ 10 , 1 ] } }) 取模运算,条件相当于key % 10 == 1 即key除以10余数为1的 例8:查询成绩为5 、15、25、。。。。95的歌星。 代码: db.list.find({"score" : { $mod: [10, 5] }}).pretty(); 语法9:db.collection.find({ "key" : { $in: [ 1, 2, 3 ] } }) 属于,条件相当于key等于[ 1, 2, 3 ]中任何一个. 例9:查询序号(num)为3或者6或者9的歌星。 代码: db.list.find({"num": {$in : ["3", "6", "9"]}}).pretty(); 语法10:db.collection.find({ "key" : { $nin: [ 1, 2, 3 ] } }) 不属于,条件相当于key的值不属于[ 1, 2, 3 ]中任何一个。 例10:查询国籍不为美国和韩国的歌手。 代码: db.list.find({"country": { $nin: ["美国", "韩国"] }}).pretty(); 语法11:db.collection.find({ "key" : { $size: 1 } }) $size 数量、尺寸,条件相当于key对应的值的数量是1(值必须是数组) 例11:查询有3个代表作品的歌手。 代码: db.list.find({"works": { $size: 3 }}).pretty(); 语法12:db.collection.find({ "key" : { $exists : true|false } }) $exists 字段存在,true返回存在字段key的数据,false返回不存在字段key的数据 例12:查询包含tel字段的数据。 代码: db.list.find({"tel" : { $exists: true }}).pretty(); 语法13:db.collection.find({ $or : [{a : 1}, {b : 2} ] }) 符合两个条件中任意一个的数据 都会被查询出来 例13:某个娱乐公司15个人,资料都在数据库里面,某个活动必须要刘德华参加, 另外需要团队的全部女歌手配合演出,领导安排你帮忙打印歌手的资料。 代码: db.list.find({$or : [{"name":"刘德华"}, {"sex":"女"}]}).pretty(); 语法14: 插入一条数据 db.list.insert({"name":"test", "score": {"yw": 80, "sx": "90", "wy": 95}}) 例14: 查询语文成绩为80的同学 db.list.find({"score.yw": 80}).pretty(); 查询数学成绩为90的同学 db.list.find({"score.sx": "90"}).pretty(); -------------------------------------------------- 补充几个方法: 1) sort({key: 1/-1}) 安装key字段的值 排序 1升序 -1降序 示例: 按照年龄从小到大排序 db.list.find({}).sort({"age": 1}).pretty(); 示例: 安装得分从高到底排序 db.list.find({}).sort({"score": -1}).pretty(); 2) skip(n) 跳过n条 示例: 查询第3条后的所有数据 db.list.find({}).skip(3).pretty(); 3) limit(n) 限制输出多少条 示例: 输出 前 5条 db.list.find({}).limit(5).pretty(); 示例: 请求输入 第6 到 第10 条 db.list.find({}).skip(5).limit(5).pretty();