美文网首页
MongoDB 使用总结

MongoDB 使用总结

作者: shadow123 | 来源:发表于2019-10-25 16:32 被阅读0次

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

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

  • 实质:非关系型数据库的实质:非关系型数据库产品是传统关系型数据库的功能阉割版,通过 减少用不到或很少用的功能,来大幅度提高产品性能。
  • 价格:目前的非关系型数据库基本都是免费的,而比较有名气的关系型数据库都是收费的,比如:Oracle、DB2、MSSQL。MySql虽然是免费的,但是处理大型数据还是要提前作很多工作的。
  • 功能:实际开发中,很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。

安装 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)

参数:

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

例:

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

更新文档

语法:

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

参数:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如,inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参+ 数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

我们把上一条数据的 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>
)

参数:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
  • writeConcern :(可选)抛出异常的级别。

例:

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('删除成功')
})

相关文章

  • MongoDB使用总结

    MongoDB使用总结 数据库操作 show dbs : 显示所有的数据库 use user : 选择数据库u...

  • MongoDB 使用总结

    MongoDB 是免费开源的跨平台 NoSQL 数据库,非关系数据库。与关系型数据库不同,MongoDB 的数据以...

  • Python实战计划学习笔记:在MongoDB中筛选房源

    第二周,开始使用mongodb。这是我第一次使用非关系型数据库 最终成果 代码 总结 mongodb 所占用硬盘内...

  • MongoDB中有关数据库连接

    本文系个人经验以及官方文档总结,并非适用于所有版本的MongoDB或者所有语言的MongoDB驱动。 本人使用Mo...

  • mongodb安装使用总结

    安装mongodb 并且启动,下载安装Robomongo数据库可视化工具(我安装的是3.4.0版本) 成功启动连接...

  • mogodb学习报告(一)

    概述 MongoDB是什么? MongoDB的作用,使用场景? MongoDB的使用方式? MongoDB是什么,...

  • 关于Mongodb的全面总结

    关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...

  • spring boot使用mongodb

    使用mongodb思路 引入spring boot mongodb jar包 配置mongodb相关信息 测试使用...

  • mongodb 使用参考

    关于mongodb创建索引的一些经验总结(转) MongoDb 数据迁移 MongoDB 更新数据 MongoDB...

  • 在windos中MongoDB配置

    第一次使用MongoDB数据库,自己采坑总结 第一:关于安装就不说,直接去官网下载安装。 第二:关于MongoDB...

网友评论

      本文标题:MongoDB 使用总结

      本文链接:https://www.haomeiwen.com/subject/ftjsvctx.html