数据库
首页 > 数据库> > MongoDB在windows系统的安装配置详解以及基本操作

MongoDB在windows系统的安装配置详解以及基本操作

作者:互联网

1.数据库的种类

种类

关系型和非关系型数据库软件区别

相同点:

不同点

2.MongoDB

MongoDB简介

MongoDB是什么

MongoDB是一个基于分布式文件存储的数据库,由c++语言编写,旨在为WEB应用提供可拓展的高性能数据存储解决方案。
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库当中功能最丰富,最像关系型数据库的。

json示例
{id:1,name:张三,age=20}

MongoDB功能

3.下载安装MongoDB

下载

解压、创建包

如图
目录创建图解

创建服务

在这里插入图片描述

MongoDB 服务正在启动 .
MongoDB 服务已经启动成功。

作者亲身踩雷解决

那么如果不成功怎么办?
举一个作者踩雷的例子

我把mongodb解压到中文的路径下了,在管理的服务中看到mongodb服务的属性下的可执行路径有中文乱码,然后执行net start
mongodb,报找不到可执行文件的错误(好像是这个记不清了)

如何解决

4.MongoDB的基本操作

基本概念

进入数据库
bin目录下开启服务(net start mongodb)后,输入mongo进入数据库

查看数据库

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

选择数据库以及创建数据库

选择数据库

> use admin
switched to db admin

创建数据库(隐式创建)

> use qq
switched to db qq

但是为什么show dbs看不到这个qq数据库呢?
因为虽然qq数据库已经创建了,但是qq数据库是空的,所以看不到,后面只要插入一点数据,就能看到了。

查看集合

这里的集合类似于关系型数据库的表

> show collections

创建集合

> db.createCollection('c1')
{ "ok" : 1 }

此时我们再次查看数据库时,发现qq数据库已经存在了

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
qq      0.000GB

同样查询qq数据库的集合也能查到集合了

> show collections
c1

删除集合

> db.c1.drop()
true
> show collections

删除数据库


> use qq
switched to db qq
> db.dropDatabase()
{ "dropped" : "qq", "ok" : 1 }
> show databases
admin   0.000GB
config  0.000GB
local   0.000GB

5.MongoDB文档增删改查(CURD)

明确需求

数据库主要用来存放项目数据
我们已经学会了数据库和集合的创建
思考:如何实现集合中数据的增删改查呢?
回答:通过MongoDB语法即可

C增(Create)

单条插入

实例


> use qq
switched to db qq
> show collections
> db.users.insert({name:"zhangsan",age:20})
WriteResult({ "nInserted" : 1 })

小贴士:

1.数据库和集合不存在就隐式创建
2.对象的键统一不加引号方便查看,但是在查看集合数据时系统会自动添加
3.mongodb会给每条数据增加一个全球唯一的_id键,当然这个键你是可以在添加时,写这个的,但是实战极其不推荐!!!
举个例子
db.users.insert({_id:123,name:“lisi”,age:21})
WriteResult({ “nInserted” : 1 })
db.users.find()
{ “_id” : ObjectId(“60a3bd32e98e23691411768e”), “name” : “zhangsan”, “age” : 20 }
{ “_id” : 123, “name” : “lisi”, “age” : 21 }

多条插入

实例

> db.users.insert([{name:"xiaoming",age:18},{name:"xiaogang",age:21},{name:"xiaohong",age:19}])
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 3,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})
> db.users.find()
{ "_id" : ObjectId("60a3bd32e98e23691411768e"), "name" : "zhangsan", "age" : 20 }
{ "_id" : 123, "name" : "lisi", "age" : 21 }
{ "_id" : ObjectId("60a3c022e98e23691411768f"), "name" : "xiaoming", "age" : 18 }
{ "_id" : ObjectId("60a3c022e98e236914117690"), "name" : "xiaogang", "age" : 21 }
{ "_id" : ObjectId("60a3c022e98e236914117691"), "name" : "xiaohong", "age" : 19 }
>

小拓展

> for(var i=1;i<=10;i++){
... print(i)
... }
1
2
3
4
5
6
7
8
9
10

你明白了吗??!!
意思就是说你可以循环插入多条数据

实例

> use qq
switched to db qq
> db.createCollection('c2')
{ "ok" : 1 }
> show collections
c2
users
> for(var i=1;i<=10;i++){
... db.c2.insert({uid:i,name:"aaa",age:18})
... }
WriteResult({ "nInserted" : 1 })
> db.c2.find()
{ "_id" : ObjectId("60a3c239e98e236914117692"), "uid" : 1, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e236914117693"), "uid" : 2, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e236914117694"), "uid" : 3, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e236914117695"), "uid" : 4, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e236914117696"), "uid" : 5, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e236914117697"), "uid" : 6, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e236914117698"), "uid" : 7, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e236914117699"), "uid" : 8, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e23691411769a"), "uid" : 9, "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("60a3c239e98e23691411769b"), "uid" : 10, "name" : "aaa", "age" : 18 }

R查(Retrieve)

查询全部数据

实例

> db.users.find()
{ "_id" : ObjectId("60a3bd32e98e23691411768e"), "name" : "zhangsan", "age" : 20 }

查询全部数据,只看某一列

实例

> db.users.find({},{name:1})
{ "_id" : ObjectId("60a3bd32e98e23691411768e"), "name" : "zhangsan" }
{ "_id" : 123, "name" : "lisi" }
{ "_id" : ObjectId("60a3c022e98e23691411768f"), "name" : "xiaoming" }
{ "_id" : ObjectId("60a3c022e98e236914117690"), "name" : "xiaogang" }
{ "_id" : ObjectId("60a3c022e98e236914117691"), "name" : "xiaohong" }

查询全部数据,除了某一列都看

实例

> db.users.find({},{name:0})
{ "_id" : ObjectId("60a3bd32e98e23691411768e"), "age" : 20 }
{ "_id" : 123, "age" : 21 }
{ "_id" : ObjectId("60a3c022e98e23691411768f"), "age" : 18 }
{ "_id" : ObjectId("60a3c022e98e236914117690"), "age" : 21 }
{ "_id" : ObjectId("60a3c022e98e236914117691"), "age" : 19 }

查询年龄大于20岁的数据

实例

> db.users.find({age:{$gt:20}})
{ "_id" : 123, "name" : "lisi", "age" : 21 }
{ "_id" : ObjectId("60a3c022e98e236914117690"), "name" : "xiaogang", "age" : 21 }

运算符表格

运算符作用
$gt大于
$gte大于等于
$lt小于
$lte小于等于
$ne不等于
$inin
$ninnot in

U更新(Update)

持续更新中。。。。。。

标签:name,ObjectId,windows,MongoDB,age,db,数据库,基本操作,id
来源: https://blog.csdn.net/qq_48033003/article/details/116998564