MongoDB安装

1.下载安装程序

下载地址如下
https://www.mongodb.com/try/download/community

如图所示:在这里插入图片描述
下载完成之后直接安装,安装方式与windows安装其它软件一样,一直下一步即可,也可以Custom(自定义安装)自定义安装位置。
在这里插入图片描述
安装完成之后的目录如下图所示:
最新版的Mongodb自动在安装目录下创建log和data文件夹,老版本需要自己手动创建 但我们仍然需要在data目录下创建一个db文件夹 ,很重要。
在这里插入图片描述

2. 配置环境变量

右键我的电脑-属性-高级系统设置-环境变量,如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.启动MongoDB

mongod是启动MongoDB的命令,从以上图片中可以看出它有报错说没有在C盘下没找到\data\db目录,MongoDB启动默认去C盘根目录找,如果是我们自定义的目录就输入以下命令去启动MongoDB:

mongod -dbpath E:\MongoDB\data\db -port(可以指定端口号)

启动成功如下图,在使用MongoDB的过程中不能关闭此窗口
在这里插入图片描述
重新再打开一个cmd窗口,输入mongo,就可以使用MongoDB数据库了。
在这里插入图片描述
安装图形化界面_MongoDB Compass 社区版
新版在安装MongoDB服务器的时候已经同步安装好。
在这里插入图片描述
直接点击上图的connect进行连接。可以看到我们创建的文档。
在这里插入图片描述
nosqlmanager下载地址
https://www.mongodbmanager.com/download

4.使用MongoDB

基本概念

  • 数据库(database)
  • 集合(collection)
  • 文档(document)

文档=>集合=>数据库

数据库内有集合,集合内有文档,在MongoDB中,数据库集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合。

//显示所有数据库
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> show databases
admin   0.000GB
config  0.000GB
local   0.000GB
>

//进入数据库,随便写的,事先并没有创建
> use test
switched to db test
//查看当前在哪个数据库
> db
test
//显示数据库中 所有的集合
> show collections

4.1 MongoDB的CRUD(增删改查)

官方文档地址:
https://docs.mongodb.com/v4.0/tutorial/query-documents/

当向集合中输入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识。也可以自己指定_id,也必须确定唯一性。

//向数据库中插入文档
db.<collection>.insert({doc})  /插入一个
db.<collection>.insert([{doc},{doc},{doc}])  /插入多个,一个数组

3.2版本之后新增的
db.<collection>.insertOne() /将单个 文档插入到集合中
db.<collection>.insertMany() /可以将多个文档插入到集合中

//举例。向test数据中的student集合中插入一个新的学生对象
{name:"李如风",age:18,gender:"男"}
db.student.insert({name:"李如风",age:18,gender:"男"})
//结果如下
> db.student.insert({name:"李如风",age:18,gender:"男"})
WriteResult({ "nInserted" : 1 })
> use test
switched to db test
> db
test
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
> show collections
student
>

//查询当前集合中所有的文档
db.<collection>.find()
> db.student.find()
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "男" }
>

//插入多个
> db.student.insert([{name:"李如风",age:18,gender:"男"},{name:"幻神君",age:89,gender:"妖怪"},{name:"达人",age:7878,gender:"女"}])
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 3,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})

//查询
> db.student.find()
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "男" }
{ "_id" : ObjectId("621cb8ece9f6733537102b91"), "name" : "李一一", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("621cba49e9f6733537102b93"), "name" : "幻神君", "age" : 89, "gender" : "妖怪" }
{ "_id" : ObjectId("621cba49e9f6733537102b94"), "name" : "达人", "age" : 7878, "gender" : "女" }
>

//语法
db.collection.find({})  /用来查询集合中所有符合条件的文档
//查询属性是指定值的文档{键:值}
> db.student.find({name:"达人"})
{ "_id" : ObjectId("621cba49e9f6733537102b94"), "name" : "达人", "age" : 7878, "gender" : "女" }

//查询集合中符合条件的第一个文档,返回的是一个文档对象
//语法
db.collection.dindOne({})
> db.student.find()
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "男" }
{ "_id" : ObjectId("621cb8ece9f6733537102b91"), "name" : "李一一", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("621cba49e9f6733537102b93"), "name" : "幻神君", "age" : 89, "gender" : "妖怪" }
{ "_id" : ObjectId("621cba49e9f6733537102b94"), "name" : "达人", "age" : 7878, "gender" : "女" }
{ "_id" : ObjectId("621cc596e9f6733537102b95"), "name" : "李如云", "age" : 18, "gender" : "女" }

> db.student.findOne({age:18})
{
        "_id" : ObjectId("621caf11e9f6733537102b90"),
        "name" : "李如风",
        "age" : 18,
        "gender" : "男"
}
//与find的区别如下
> db.student.find({age:18})
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "男" }
{ "_id" : ObjectId("621cc596e9f6733537102b95"), "name" : "李如云", "age" : 18, "gender" : "女" }
>

//查询所有结果的数量
db.collection.find({}).count({})
> db.student.find({}).count({})
5

//语法
db.collection.update({查询的值},{修改的值})   /新对象替换旧对象,不要使用
//操作符修改,$set用来修改文档中指定的属性,$unset用来删除文档中指定的属性
db.inventory.update(
   { 查询的值},
   {
     $set: { {<value1>, <value2>,...} },   /没有添加的属性则添加,有则修改,update默认只修改第一个,要想修改多个用updateMany
   }
)

//修改多个
db.student.updateMany(
   {查询的值},
   {
     $set:{{<value1>, <value2>,...}},  
   }
)

//db.collection.replaceOne({}) /替换一个文档


> db.student.find()
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "男" }
{ "_id" : ObjectId("621cb8ece9f6733537102b91"), "name" : "李一一", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("621cba49e9f6733537102b93"), "name" : "幻神君", "age" : 89, "gender" : "妖怪" }
{ "_id" : ObjectId("621cba49e9f6733537102b94"), "name" : "达人", "age" : 7878, "gender" : "女" }
{ "_id" : ObjectId("621cc596e9f6733537102b95"), "name" : "李如云", "age" : 18, "gender" : "女" }

//修改幻神君的gender为神仙
> db.student.update({name:"幻神君"},{gender:"神仙"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.student.find()"})
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "" }
{ "_id" : ObjectId("621cb8ece9f6733537102b91"), "name" : "李一一", "age" : 26, "gender" : "" }
{ "_id" : ObjectId("621cba49e9f6733537102b93"), "gender" : "神仙" }
{ "_id" : ObjectId("621cba49e9f6733537102b94"), "name" : "达人", "age" : 7878, "gender" : "" }
{ "_id" : ObjectId("621cc596e9f6733537102b95"), "name" : "李如云", "age" : 18, "gender" : "" }
>
我们可以看到修改的文档直接使用新的对象替换了旧对象,不推荐使用

//使用操作符修改
 db.student.update(
 {"_id" : ObjectId("621cba49e9f6733537102b93")},
 {
 $set:{name:"玉皇大帝",gender:"神仙",age:88}
 }
 )
 > db.student.find()                                                                                        :88}})
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "" }
{ "_id" : ObjectId("621cb8ece9f6733537102b91"), "name" : "李一一", "age" : 26, "gender" : "" }
{ "_id" : ObjectId("621cba49e9f6733537102b93"), "gender" : "神仙", "name" : "玉皇大帝", "age" : 88 }
{ "_id" : ObjectId("621cba49e9f6733537102b94"), "name" : "达人", "age" : 7878, "gender" : "" }
{ "_id" : ObjectId("621cc596e9f6733537102b95"), "name" : "李如云", "age" : 18, "gender" : "" }
>

//删除玉皇大帝的性别
 db.student.update(
 {"_id" : ObjectId("621cba49e9f6733537102b93")},
 {
 $unset:{gender:"神仙"}
 }
 )
> db.student.find()                                                                       })
{ "_id" : ObjectId("621caf11e9f6733537102b90"), "name" : "李如风", "age" : 18, "gender" : "" }
{ "_id" : ObjectId("621cb8ece9f6733537102b91"), "name" : "李一一", "age" : 26, "gender" : "" }
{ "_id" : ObjectId("621cba49e9f6733537102b93"), "name" : "玉皇大帝", "age" : 88 }
{ "_id" : ObjectId("621cba49e9f6733537102b94"), "name" : "达人", "age" : 7878, "gender" : "" }
{ "_id" : ObjectId("621cc596e9f6733537102b95"), "name" : "李如云", "age" : 18, "gender" : "" }
>

//年龄为18的修改成50
db.student.updateMany(
   {age:18},
   {
   $set:{age:50},  
   }
)

/* 1 */
{
  "_id" : ObjectId("621caf11e9f6733537102b90"),
  "name" : "李如风",
  "age" : 50,
  "gender" : ""
}

/* 2 */
{
  "_id" : ObjectId("621cb8ece9f6733537102b91"),
  "name" : "李一一",
  "age" : 26,
  "gender" : ""
}

/* 3 */
{
  "_id" : ObjectId("621cba49e9f6733537102b93"),
  "name" : "玉皇大帝",
  "age" : 88
}

/* 4 */
{
  "_id" : ObjectId("621cba49e9f6733537102b94"),
  "name" : "达人",
  "age" : 7878,
  "gender" : ""
}

/* 5 */
{
  "_id" : ObjectId("621cc596e9f6733537102b95"),
  "name" : "李如云",
  "age" : 50,
  "gender" : "女"
}

//语法
db.collection.remove({}) /会删除符合条件的一个或所有文档,空对象则会删除所有文档
db.collection.deleteOne({}) /删除多个文档
db.collection.deleteMany({})  /删除一个文档
db.collection.drop({}) /不传参数默认删除直接删除集合
db.dropDatabase({}) /删除数据库

//删除玉皇大帝
db.student.remove({age:88})
/* 1 */
{
  "_id" : ObjectId("621caf11e9f6733537102b90"),
  "name" : "李如风",
  "age" : 50,
  "gender" : "男"
}

/* 2 */
{
  "_id" : ObjectId("621cb8ece9f6733537102b91"),
  "name" : "李一一",
  "age" : 26,
  "gender" : "女"
}

/* 3 */
{
  "_id" : ObjectId("621cba49e9f6733537102b94"),
  "name" : "达人",
  "age" : 7878,
  "gender" : "女"
}

/* 4 */
{
  "_id" : ObjectId("621cc596e9f6733537102b95"),
  "name" : "李如云",
  "age" : 50,
  "gender" : "女"
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值