NoSLQ之MongoDB简单入门

MongoDB/NoSQL
403
0
0
2022-09-14

一、MongoDB介绍

MongoDB属于NoSLQ型数据库 。

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

二、数据库目录结构

在使用MongoDB前我们需要开启MongoDB service端口

mongodb://localhost:27017

然后我们就可以使用了

首先我们需要来了解一下MongoDB的目录结构:

Go

连接MongoDB服务后,在端口下我们可以看到有几个数据库(例如:admin、config、coolcar等),一个数据库下可以有一个或者多个collection(例如:coolcar下有一个account),而一个collection下面则是Documents,该文档下就是具体的一条或多条数据。

三、基本操作(CRUD)

这里以coolcar数据库中的account为例

1. 增加数据

当我们使用一下代码时,如果coolcar没有account时,MongoDB会为我们创建

即:db.collection.insert()

db.acconut.insert() //增加数据,可以单条,或者多条
db.account.insertOne() //增加一条数据
db.account.insertMany() //增加多条数据

例:

db.account.insertMany([
{
_id: "01", //如果_id不设,系统会自动设置
open_id:"trip01",
login_count: 3,
},
{
_id: "02",
open_id: "trip02",
login_count:4,
},
])

数据就已经写入了:

{
"acknowledged": true,
"insertedIds": {
"0": "01",
"1": "02"
}
}

_id: “01”:

{
"_id": "01",
"open_id": "trip01",
"login_count": 3
}

_id:”02”:

{
"_id": "02",
"open_id": "trip02",
"login_count": 4
}
2. 查找数据
//查数据
db.account.find()
ab.account.findAndModify()

运行:db.account.find()

[
{
"_id": "01",
"open_id": "trip01",
"login_count": 3
},
{
"_id": "02",
"open_id": "trip02",
"login_count": 4
}
]

当然这里还可以根据条件find

//查找大于3的login_count
db.account.find({
login_count:{$gt:3}
})
//and逻辑查找
db.account.find({
login_count:{$gt:3},
open_id:"trip500",
})
//根据字段查找
db.account.find({
"profile.age":{$lte: 30}
})
db.account.getIndexes({
"profile.age":1
})
//or逻辑查找
//$or:[{con1, con2} or {con3}]
db.account.find({
$or:[
{
login_count:{$gt: 2},
open_id: "trip05",
},
{
login_count: 3,
}
]
})

当然我们还可以使更新数据的方法来修改

//查找open_id,如果有则找到,没有则创建
function resolveOpenId(open_id){
return db.account.update({
open_id: open_id
}, {
$set:{
open_id: open_id
}
}, {
upsert: true
})
}
3. 更新数据
db.account.update()
db.account.updateOne()
db.account.updateMany()

我们仍然以db.account.update()为例

db.account.update({
_id:"01" //先找到_id:"01"的数据
},{
$set:{ //更新的内容
open_id:"trip05",
login_count:0,
}
})

然后我们就可以看到:

{
"_id": "01",
"open_id": "trip05",
"login_count": 0
}

当然还有一个更新方式:

//更新数据
db.account.update({
_id: "01"
},{
$inc:{
login_count: 100 //在原本login_count值的基础上加上100
},
$set:{
open_id: "trip500"
}
})

看一下结果:

{
"_id": "01",
"open_id": "trip500",
"login_count": 100
}

当然,这里我们还可以增加其他信息:

//更新数据
db.account.update({
_id: "02"
},
{
$set:{
profile:{
name:"abc",
age: 21,
photo_url: "https://example.com/123",
}
}
})

结果:

{
"_id": "02",
"open_id": "trip02",
"login_count": 4,
"profile": {
"name": "abc",
"age": 21,
"photo_url": "https://example.com/123"
}
}
4. 删除数据
db.account.deleteOne()
db.account.deleteMany()

这里以db.account.deleteOne()为例:

db.account.deleteOne({
_id: "01"
})

看到这样的结果:

{
"acknowledged": true,
"deletedCount": 1 //删除条数据
}

如果我们需要清空account中的数据可以使用:

db.account.drop()