MongoDB 使用总结

2019-10-25  本文已影响0人  shadow123

MongoDB 是免费开源的跨平台 NoSQL 数据库,非关系数据库。与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储。

非关系数据库和关系型数据库的区别是什么?

安装 MongoDB

官网下载

运行MongoDB服务端:

启用服务的命令是:mongod
通过 shell 连接 MongoDB 服务:mongo

1.打开命令行:先打开运行(快捷键win+R),然后输入cmd后回车,就可以打开命令行工具。
2.执行mongod:在命令中直接输入mongod,但是你会发现服务并没有启动,报了一个exception,服务停止了。
3.新建文件夹:出现上边的错误,是因为我们没有简历Mongodb需要的文件夹,一般是安装盘的根目录,建立data/db,这两个文件夹。
4.运行mongod:这时候服务就可以开启了,链接默认端口是27017。

Mongo基本命令

查看存在数据库命令:show dbs

查看数据库版本命令:db.version()

use admin: 进入数据,成功会显示:switched to db admin。

show collections: 显示数据库中的集合。
db:显示当前位置。

创建集合

MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

删除集合

语法:

db.collection.drop()

返回值

如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。

插入文档

语法:

db.COLLECTION_NAME.insert(document)

例:

db.user.insert({"name":"frank","age":18})
WriteResult({ "nInserted" : 1 }) // 插入成功

查询文档

语法:

db.collection.find(query, projection)

参数:

例:

db.user.find()
{"_id" : ObjectId("5db29925da796623a4bfb583"), "name" : "frank", "age" : 18}

更新文档

语法:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数:

我们把上一条数据的 age 改成 20

db.user.update({"name":"frank"},{"name":"frank","age":20})
db.user.find()
{ "_id" : ObjectId("5db29925da796623a4bfb583"), "name" : "frank", "age" : 20 }

删除文档

语法:

db.collection.remove(
   <query>,
   <justOne>
)

参数:

例:

db.user.remove({"name":"frank"})
WriteResult({ "nRemoved" : 1 }) // 删除成功

删除数据库

db.dropDatabase( ):删除整个数据库,在删除库时,一定要先进入数据库,然后再删除。

Mongoose

Mongoose是设计用于异步环境的MongoDB对象建模工具。

安装

npm install mongoose

连接数据库

const mongoose = require('mongoose');
 
mongoose.connect('mongodb://localhost/my_database', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

Schema

const Schema = mongoose.Schema;
 
const userModel = new Schema({
    username: { type: String, required: true },
    password: { type: String, required: true },
    email: String
});

Model

var User = mongoose.model('userModel', userModel );

插入数据

User.insertMany({ username: 'frank', password: 123123, email: '123456@163.com' })
    .then(data => {
        console.log(data)
        console.log('插入成功')
    }).catch(err => {
        console.log(err)
    })

查询数据

User.find().then((data) => {
    console.log(data)
});

修改数据

‘$set’ 指定一个键的值,这个键不存在就创建它.可以是任何MondoDB支持的类型.

User.update({ username: "frank" }, { $set: { username: "frank1" } }).then(() => {
    console.log('修改成功')
})

‘$inc’增减修改器,只对数字有效.

Model.update({
  'age': 22
 }, {
  '$inc': {
    'age': 1
  }
 });
// age = 23

‘$unset’ 同上取反,删除一个键

 Model.update({
  'age': 22
 }, {
  '$unset': {
    'age': '123'
  }
 });
// 执行后: age键不存在

‘$push’ 给一个键push一个数组成员,键不存在会创建

 Model.update({
  'age': 22
}, {
  '$push': {
    'array': 10
  }
});
// 执行后: 增加一个 array 键,类型为数组, 有一个成员 10

‘$addToSet’ 向数组中添加一个元素,如果存在就不添加

Model.update({
  'age': 22
}, {
  '$addToSet': {
    'array': 10
  }
});
// 执行后: array中有10所以不会添加

'each' 遍历数组, 和push 修改器配合可以插入多个值

Model.update({
  'age': 22
}, {
  '$push': {
    array': {
      '$each': [1, 2, 3, 4, 5]
    }
  }
});
// 执行后: array : [10,1,2,3,4,5]

‘$pop’ 向数组中尾部删除一个元素

Model.update({
  'age': 22
}, {
  '$pop': {
    'array': 1
  }
});
// 执行后: array : [10,1,2,3,4]  tips: 将1改成-1可以删除数组首部元素

‘$pull’ 向数组中删除指定元素

Model.update({
  'age': 22
}, {
  '$pull': {
    'array': 10
  }
});
// 执行后: array : [1,2,3,4]  匹配到array中的10后将其删除

删除数据

User.remove().then(() => {
    console.log('删除成功')
})

删除一条数据

User.deleteOne().then(() => {
    console.log('删除成功')
})
上一篇 下一篇

猜你喜欢

热点阅读