老生常谈MongoDB数据库基础操作

为了保存网站的用户数据和业务数据,通常需要一个数据库。MongoDB和Node.js特别般配,因为Mongodb是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管理数据库的命令和JavaScript语法很像。本文将详细介绍MongoDB数据库

数据库

数据库,顾名思义,是数据存储的仓库,主要功能有两个

1、有组织地存放数据

与在磁盘上自己存放文件不同,数据库替用户组织了数据的存储形式,用户只需要按照数据库提供的接口将数据写入,数据便会按照标准的格式被存储起来

2、按照不同的需求进行查询

数据库不仅要能写入数据,还支持数据查询,并且能够按照不同的需求进行查询。因为存储是有组织的,因此查询上可以更规范化,查询速度也会快很多

不同的数据库的区别就是存放数据的组织不同,同时提供了不同种类的查询。用户可以按照自己的需求,选择合适的数据库

【分类】

数据库的分类有很多种,按照对SQL语言的支持,可以分为以下两种:

1、SQL数据库,比如Oracle、Mysql等

2、NoSQL数据库,比如Redis、MongoDB等

随着在规模互联网应用的出现,传统的SQL数据库遇到了一些设计上的弊端。比如,SQL对表的定义使应用不够灵活,横向扩展比较困难。与一些特性难以满足相比,反而是SQL数据库的很多特性没有用武之地。比如,在很多场景下,及时存取并不是必要的,也没有特别多的事务需求,而这些额外的特性消耗着SQL数据库的性能

因此NoSQL数据库应运而生,NoSQL全称是Not Only SQL,意即"不仅仅是SQL"。但事实上,绝大多数NoSQL数据库都放弃了对SQL语言的支持。与SQL关系型数据库相比,NoSQL非关系型数据库大多放弃了一些特性。比如,放弃了实时一致性、对事务的完整支持以及多表查询等。听起来缺点很多,但收益也明显,NoSQL数据库简单便捷、方便扩展,并且有更好的性能

概述

MongoDB是一个开源的NoSQL数据库,在国内被称为芒果数据库。Linux、Apache、MySQL和PHP组成了非常有名的LAMP架构。现在,有人提议将LAMP中的代表M的MySQL替换为MongoDB

NoSQL数据库有很多,为什么要选择MongoDB呢?

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB使用集合(collection)和文档(document)来描述和存储数据,集合(collection)就相当于表,文档(document)相当于行,字段相当于列,不像MySQL之类的关系型数据库,表结构是固定的,比如某一行由若干列组成,行行都一样,而MongoDB不同,一个集合里的多个文档可以有不同的结构,更灵活一些

MongoDB有自己很鲜明的特色,总结起来有以下4条

1、没有表结构的限制

传统SQL数据库中,对每张表都需要定义表结构。如果有新的存储需求,往往需要添加新的字段,更改表结构。在一些场景下,会显得很不方便,而对于MongoDB,这不再是问题。因为它没有表结构这个概念,在使用一张表之前,不需要对这张表进行任何初始化操作。MongoDB的这种特性对快捷开发和多变的业务需求是很合适的

2、完全的索引支持

有些NoSQL数据库,比如redis,它是内存数据库,速度很快。但是,做为键值数据库,只支持一种按键查询的方式。灵活性、使用范围和易用性都受到影响;再比如hbase,写入速度很快。但是,同样查询受限,它只支持单索引,二级索引需要自己实现

而MongoDB支持单键索引、多键索引、全文索引和地理位置索引。所以MongoDB是功能非常完善的NoSQL数据库,也被称为最接近关系数据库的非关系数据库

3、良好的数据安全性和方便的规模扩展

MongoDB使用复制集做多副本存储,以保证数据的安全性。同时,MongoDB内置的分片技术可以很方便地进行数据规模的扩展。分片技术是很新颖的一个特性,它包含了自动数据接口,动态扩容和缩容等一系列在其他数据库中需要大量人工操作的工作,同时提供了对数据库的统一访问入口,不需要在应用层再进行分发,显著减少了人工成本

4、完善的文档支持和驱动支持

安装

首先,在官网的下载页面选择合适的MongoDB版本进行下载

然后,一步一步进行安装即可

默认情况下,安装到C盘的Program Files文件夹下的MongoDB文件夹中

服务器配置

【搭建服务器】

搭建服务器,需要进行以下几个步骤

1、创建data文件夹存储数据库的数据文件;创建log文件夹存储数据库的日志文件;创建bin文件夹存储数据库的可执行文件;创建conf文件夹来存储数据库的配置文件

2、在windows系统下需要设置环境变量,否则在命令行中会提示mongod命令不可用

在环境变量的path中,添加mongod.exe文件的目录

3、接下来,有两种方式启动mongoDB服务,一种如下所示,设置dppath参数值为自定义的目录路径

mongod --dbpath=D:/app/mongo/data

由下图看出,mongodb的默认端口是27017

4、另一种是在conf文件夹下新建mongod.conf文件,在这个文件中将设置mongodb启动的配置参数

dbpath = datalogpath = log/mongod.log
mongod -f conf/mongod.conf

这种方法在命令行工具中没有任何提示,因为记录已经保存到日志文件中,此时mongodb服务已经正常开启

【连接服务器】

在搭建好mongodb服务器之后,需要使用客户端mongo进行连接,才能进行下一步的操作

因为是使用mongo连接mongodb服务器,所以需要保证启动mongodb服务器的命令行工具不被关闭,新开一个命令行工具,并输入mongo 127.0.0.1/test,test为数据库的名称

【关闭mongod服务】

首先切换到admin数据库(use admin),然后使用db.shutdownServer()命令来关闭服务

数据库操作

【默认】

MongoDB 中默认的数据库为 test,如果没有创建新的数据库,集合将存放在 test 数据库中

【查看】

使用show dbs来查看数据库

show dbs

【创建/切换】

使用use命令来切换/创建数据库,会发现创建的数据库并不在数据库的列表中, 要显示它,需要向数据库插入一些数据

use db_name

【显示当前数据库】

使用db命令来显示当前数据库

db

【将数据写入集合中】

使用db.集合名.insert(文档)来将文档的数据写入集合中,文档的格式为JSON。而所有存储在集合中的数据都是BSON格式。BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

db.collection_name.insert()

【查看集合】

上面的插入操作,会自动创建集合db1_coll1,使用show collections命令可以查看当前数据库中的所有集合

【删除数据库】

这将删除当前所选数据库。 如果没有选择任何数据库,那么它将删除默认的'test‘数据库

db.dropDatabase()

集合操作

集合类似于SQL数据库中的数据表,标识为collection

【查看集合】

可以使用命令show collections检查创建的集合

[注意]也可以使用show tables来查看集合

【创建集合】

在插入文档时,MongoDB首先检查上限集合capped字段的大小,然后检查max字段

db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean>, size: <number>, max <number>} )

name:集合的名字

capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义

max:集合中最大条数限制,默认为没有限制

size:限制集合使用空间的大小,默认为没有限制,size的优先级比max要高

autoIndexId:是否使用_id作为索引,默认为使用(true或false)

[注意]向集合中插入文档时,如果集合不存在 ,则会自动创建集合

【删除集合】

MongoDB 的 db.collection_name.drop() 用于从数据库中删除集合。如果选定的集合成功删除,drop()方法将返回true,否则返回false

以上这篇老生常谈MongoDB数据库基础操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MongoDB入门教程之细说MongoDB数据库的增删查改操作

    看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察"划线区域"的信息,发现db文件夹下有一个类似的"lock file"阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享.  一: Insert操作 上一篇也说过,文档是采用"K-V"格式存储的,如果大家对JSO

  • MongoDB数据库文档操作方法(必看篇)

    前面的话 本文将详细介绍MongoDB数据库关于文档的增删改查 如果数据库中不存在集合,则MongoDB将创建此集合,然后将文档插入到该集合中 要在单个查询中插入多个文档,可以在insert()命令中传递文档数组 可以使用js语法,插入多个文档 [save()] 插入文档也可以使用db.post.save(document). 如果不在文档中指定_id,那么save()方法将与insert()方法一样自动分配ID的值.如果指定_id,则将以save()方法的形式替换包含_id的文档的全部数据.

  • mongodb 数据库操作详解--创建,切换,删除

    mongodb安装就不说了,请参考:centos yum 安装 mongodb 以及php扩展 一,创建,切换,删除数据库 [root@localhost zhangy]# mongo MongoDB shell version: 2.4.6 connecting to: tank > use test //创建 or 切换数据库 switched to db test > db.dropDatabase() //删除数据库 { "dropped" : "test

  • 基于MongoDB数据库的数据类型和$type操作符详解

    前面的话 本文将详细介绍MongoDB数据库的数据类型和$type操作符 类型 数字 备注 Double 1 双精度浮点数 - 此类型用于存储浮点值 String 2 字符串 - 这是用于存储数据的最常用的数据类型.MongoDB中的字符串必须为UTF-8 Object 3 对象 - 此数据类型用于嵌入式文档 Array 4 数组 - 此类型用于将数组或列表或多个值存储到一个键中 Binary data 5 二进制数据 - 此数据类型用于存储二进制数据 Undefined 6 已废弃 Objec

  • MongoDB使用指南--基本操作

    读取 db.collection.find() db.users.find( { age: {$gt: 18}}, {name: 1, address: 1} ).limit(5).sort({age:1}) users是collection名字,从users中查找; age是query criteria,筛选结果,代表查找name字段的值比18大的; name是projection,筛选列(1代表存在, 0代表不存在),代表返回结果中包含name,address,_id(默认包含字段)字段的值

  • 老生常谈MongoDB数据库基础操作

    为了保存网站的用户数据和业务数据,通常需要一个数据库.MongoDB和Node.js特别般配,因为Mongodb是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管理数据库的命令和JavaScript语法很像.本文将详细介绍MongoDB数据库 数据库 数据库,顾名思义,是数据存储的仓库,主要功能有两个 1.有组织地存放数据 与在磁盘上自己存放文件不同,数据库替用户组织了数据的存储形式,用户只需要按照数据库提供的接口将数据写入,数据便会按照标准的格式被存

  • MongoDB数据库基础操作总结

    本文实例讲述了MongoDB数据库基础操作.分享给大家供大家参考,具体如下: 1.创建数据库 >use test > db.test.insert({"name":1}) 插入之后才能查到test 2.查看数据库 >show dbs 3.删除数据库 > use test > db.dropDatabase() 4.创建集合 4.1 集合概念 集合就是一组文档,相当于多条记录. > db.title.insert({"name":&

  • 详解MongoDB数据库基础操作及实例

    详解数据库基础操作及实例 废话不多说,直接上代码,注释写的比较清楚,大家参考下, 示例代码: /** * 插入一条DB对象 */ public static void addDBObject(DBCollection collection,BasicDBObject object){ collection.insert(object); } /** * 根据id查询DBObject */ public static DBObject getDBObjectById(String value) t

  • laravel框架模型和数据库基础操作实例详解

    本文实例讲述了laravel框架模型和数据库基础操作.分享给大家供大家参考,具体如下: laravel分为三大数据库操作(DB facade[原始查找],查询构造器[Query Builder],Eloquent ORM): use Illuminate\Support\Facades\DB; 1.DB facade[原始查找] $results = DB::select('select * from users where id = :id', ['id' => 1]); DB::insert

  • MongoDB数据库基础知识整理

    一.NoSQL 了解Mongodb之前先了解一下NoSQL,NoSQL是Not Only SQL的缩写.由提供缺乏SQL关系数据库的严格限制模型的存储和检索技术组成.主要是简化设计.水平扩展以及对数据的可用性进行更精细的控制.NoSQL有多种技术例如:Redis的键值结构.HBase的列结构等. 二.Mongodb Mongodb也是NoSQL的一种.它基于的文档模型把数据对象作为一个集合中单独的文档来存储.用它来提供高性能.高可用性和自动扩展的数据存储. 三.集合 Mongodb通过使用集合将

  • mongodb数据库基础知识之连表查询

    前言 在做自己的项目时,因为刚开始接触mongodb非关系型数据库以及关系型数据库的影响还是留在脑中,总会想着进行一个连表查询,然后看官网和资料学习了下,还有那个查询时使用正则来匹配,在这里做个记录 1.mongodb正则匹配 /* 使用$regex字段匹配 */ name: {$regex: 'aa', $options: 'i'}; 或者: name: {$regex: /aa/, $options: 'i'}; 或者: name: {$regex: /aa/i}; /* 直接使用表达式 *

  • Golang对MongoDB数据库的操作简单封装教程

    前言 Golang 对MongoDB的操作简单封装 使用MongoDB的Go驱动库 mgo,对MongoDB的操作做一下简单封装 mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试. 初始化 操作没有用户权限的MongoDB var globalS *mgo.Session func init() { s, err := mgo.Dial(dialInfo) if err != nil { log.Fatalf("Create Se

  • Laravel 框架中使用 MongoDB 数据库的操作

    1.先确定好自己使用的哪个版本的 Laravel 框架,再决定 composer 哪一个的 MongoDB,我使用的是 Laravel 8 所以我 composer 了 3.8 的MongoDb 2.执行 composer 命令,进行下载,我是用的是第二个命令 composer require jenssegers/mongodb ^3.8 -vvv composer require jenssegers/mongodb:3.8 --ignore-platform-reqs 3.这个时候可能会报

  • MongoDB数据库两阶段提交实现事务的方法详解

    本文实例讲述了MongoDB数据库两阶段提交实现事务的方法.分享给大家供大家参考,具体如下: MongoDB数据库中操作单个文档总是原子性的,然而,涉及多个文档的操作,通常被作为一个"事务",而不是原子性的.因为文档可以是相当复杂并且包含多个嵌套文档,单文档的原子性对许多实际用例提供了支持.尽管单文档操作是原子性的,在某些情况下,需要多文档事务.在这些情况下,使用两阶段提交,提供这些类型的多文档更新支持.因为文档可以表示为Pending数据和状态,可以使用一个两阶段提交确保数据是一致的

  • 关于MongoDB数据库学习路线指南

    学习路线 1.MongoDB数据库学习大纲 2.MongoDB数据格式 3.MongoDB数据库特点 4.MongoDB数据库应用场景 5.MongoDB数据库单节点部署 6.MongoDB数据库常用操作指令 7.MongoDB数据库增删改查数据查询 8.MongoDB数据库运维工具 9.MongoDB授权登陆安全模式 10.MongoDB副本集集群 11.MongoDB数据备份恢复机制 12.MongoDB数据误删除恢复流程 到此这篇关于关于MongoDB数据库学习路线指南的文章就介绍到这了,

随机推荐