MongoDB安装_windows安装
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" : "女"
}