一、MongoDB介绍
MongoDB属于NoSLQ型数据库 。
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
二、数据库目录结构
在使用MongoDB前我们需要开启MongoDB service端口
mongodb://localhost:27017
然后我们就可以使用了
首先我们需要来了解一下MongoDB的目录结构:
连接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()