MongoDB
安装MongoDB
- 安装windos 版本
- mongodb-win32-x86_64-2008plus-ssl-4.0.10-signed
- 百度云盘 链接:pan.baidu.com/s/1zoRzUMym… 提取码:bj9s
- 配置环境变量
- E:\Program Files\MongoDB\Server\4.0\bin
- 启动服务器时 mongod --dbpath 数据库路径 --port 端口号
基本概念
1.数据库(database)
- 数据库的服务器 -用来保存数据 mongod 用来启动服务器 4.0版本以上 自动启动
- 数据库的客户端 -用来操作服务器 对数据进行增删改查的操作 mongo 用来启动客户端
2.集合(collection)
3.文档(document)
- 在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不 存在会自动创建数据库和集合。
基本指令
-
show dbs show database -显示当前的所有数据库
-
use 数据库名 -进入到指定的数据库中
-
show collections -显示数据库中所有的集合
-
db -db表示的是当前所在的数据库
-
数据库的CRUD操作
新增文档
//向数据库中插入一个文档
//向集合中插入一个文档 db.<collection>.insert(doc) 会创建一个id 时间戳+机器码 ObjectId() 下划线 _id 可以自己定义
//向test数据库中,stus集合中插入一个新的学生对象
db.<collection>.insertOne() -插入一个文档对象
db.<collection>.insertMany() -插入多个文档对象 []
#回报: 包含以下内容的文件:
#一个acknowledged布尔值,设置为true操作是否以写关注运行或false是否禁用了写关注
#一个insertedIds数组,包含_id每个成功插入的文档的值
try {
db.products.insertMany( [
{ item: "card", qty: 15 },
{ item: "envelope", qty: 20 },
{ item: "stamps" , qty: 30 }
] );
} catch (e) {
print (e);
}
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("562a94d381cb9f1cd6eb0e1a"),
ObjectId("562a94d381cb9f1cd6eb0e1b"),
ObjectId("562a94d381cb9f1cd6eb0e1c")
]
}
db.stus.insert({name:"猪八戒",age:20,gender:"男"});
db.stus.insert(
[
{name:"白骨精",age:16,gender:"女"},
{name:"沙和尚",age:36,gender:"男"},
{name:"唐僧",age:18,gender:"男"}
]);
db.stus.insertOne({name:'六耳猕猴'})
db.stus.find();
ObjectId()
id name age gender
61809e6c89473f3a5dcfbbe1 孙悟空 18 男
6180a15645200000cb005ea3 猪八戒 20 男
6180a1e145200000cb005ea4 蜘蛛精 16 女
6180a20445200000cb005ea5 白骨精 16 女
6180a20445200000cb005ea6 沙和尚 36 男
6180a20445200000cb005ea7 唐僧 18 男
6180a4b545200000cb005eaa 六耳猕猴
db.<collection>.find() #查询当前集合中的所有符合条件的文档
db.<collection>.findOne() #用来查询当前集合中符合条件的第一个文档
db.<collection>.find({}).count()#用来查询当前结果的数量
#{属性:查询值} ,区分
db.stus.findOne({name:'孙悟空'})
db.stus.find({age:18,name:'唐僧'})
db.stus.find({age:18}).count() #2
修改文档
语法格式:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
db.<collection>.update(查询条件,修改对象) #默认情况下会使用新对象来替换旧的对象
#注意:update 默认只改一个
db.stus.update({name:"孙悟空"},{age:20}) # 61809e6c89473f3a5dcfbbe1 20
#需要使用修改符 $set 可以用来修改和设置
#$set 修改字段
db.stus.update(
{"_id":ObjectId("61809e6c89473f3a5dcfbbe1")},
{$set:
{
name:"孙悟空",
gender:"男",
address:"武汉市"
}
}
)
#$unset 删除字段
db.stus.update(
{"_id":ObjectId("61809e6c89473f3a5dcfbbe1")},
{
$unset:{
address:""
}
}
)
db.<collection>.updateMany() #同时修改多个符合条件的文档
db.<collection>.updateOne() #修改一个符合条件的文档
删除文档
语法格式:
db.collection.remove(
<query>,
{
justOne: <boolean>, #true 只删除一个
writeConcern: <document>
}
)
#删除 很少用 数据库一般不会删除
db.<collection>.remove({}); #清空集合 性能很差 一个一个删
#可以根据条件来删除文档,传递的条件和方式和find()一样,默认情况删除多个
db.<collection>.deleteOne();
db.<collection>.deleteMany();
db.<collection>.drop();#直接删除集合
db.dropdatabase();
db.stus.remove({"_id":ObjectId("61809e6c89473f3a5dcfbbe1")})
db.stus.remove({age:18},true)
db.stus.find({isDel:0})