`

[MongoDB] MongoDB 基础

阅读更多
介绍
---------
开源文档数据库, 高性能,高可用及伸缩性

文档数据库 Document Database
-------------------------------
1 文档的数据结构JSON格式(由键-值对组成,值可以是另外一个文档)
2 传统数据库的一条记录相当一个文档
3 文档必须小于 16MB

高性能
-------------
1 支持嵌入文档减少连接操作, 减少IO活动
2 支持更快的索引查询(B树索引)

高可用
-------------
1 提供复制工具, 即副本集来自动故障转移, 数据冗余。

副本集
-------------
一组MongoDB服务器, 管理同一个数据集. 提供最终一致性读,低延迟,高吞吐量的部署。

自动伸缩性
-------------
核心的功能支持水平扩展 - 集群
自动跨集群的分片及分发数据(sharding key)


名词
-----------
database                    数据库
collection                  集合(表)
document                    文档(表记录)
index                       索引
sharding                    分片
namespace                   命名空间(数据库.集合)
bson                        二进制JSON
driver                      驱动
replication                 复制(主 - 备 - 从结构, 从主复制到备与从节点,按语句数量达到一个特定值触发,通过 oplog 日志复制, 复制是异步的,通常与主节点相差 ms 级.)
memory-mapped file          内存映射文件(BSON数据直接加载到内存,不需要转换成对象.mongodb 直接操作内存)
view                        视图
work set                    索引的子集
replica set                    副本集
data model                  数据模型(优化: 使用引用(关联)而不是嵌套文档降低数据增长, 数据增长影响性能; 使用索引; 调整小集合大小; 调整内核参数;

使用
-----------
1 连接数据库
shell> mongo
>db
>show dbs
>use mydb
>db.user.insert( {name: 'bisoft', age: 20} )
>db.user.insert( {name: 'amos_tl', age: 29} )
>show collections
>db.user.find()
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "bisoft", "age" : 20 }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "name" : "amos_tl, "age" : 30 }
>db.user.findOne()
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "bisoft", "age" : 20 }
>db.user.find().limit(1)


_id 字段表示对象的ID(Object ID), 是惟一的.

游标(cursor)
------------
var c = db.user.find() // 返回一个游标
while ( c.hasNext() ) printjson( c.next() ) // 遍历游标
printjson( c [ 4 ] ) // 游标.toArray() - 隐式转换, 此方法会将游标的全部文档加载到内存,可能导致内存溢出
 


条件查询
db.user.find( { age : 20 } )
db.user.find( { age : {$gt: 25 }} )

//排序

db.user.find( { age : 20 } )
db.user.find( { age : {$gt: 25 } ).sort( {age : 1} )

// 分页
db.students.find().skip(pageNumber > 0 ? ((pageNumber-1)*pageSize) : 0).limit(pageSize)

// 投影
db.records.find( { "user_id": { $lt: 42 } }, { "name": 1, "email": 1 } )
返回包括 _id , name, email.
db.records.find( { "user_id": { $lt: 42} }, { "_id": 0, "name": 1 , "email": 1 } )
返回包括 name, email. 

// 聚集
db.user.count()
db.user.distinct()



集合(Collections)
--------------------
相当于表, 一组文档,共享索引.

BSON & JSON
----------------
BSON 表示二进制的 JSON.


CRUD
--------

// 更新,多行更新,默认只更新一个文档,加 multi: true, 表示更新所有行
db.users.update(
   { age: { $gt: 18 } },
   { multi: true }
)

// 没有文档可更新时,想要插入数据时,加upsert: true ,表示更新或插入.

// 删除所有
db.collection.remove({})

// 删除指定条件
db.inventory.remove( { type : "amos_tl" })

// 删除一条记录
db.inventory.remove( { name : "amos_tl" }, 1 )

// 保存替换
db.collection.save( { name: "test"} )



Write Concern 写关注(写操作只发生在主节点上)
保证写操作成功, 写关注级别:
unacknowledged         0
acknowledged           1             默认(保证所有写操作都是成功的)
                       >1            确保已经写到磁盘
majority 
w : 1

journaled: 确保已经写到磁盘; 数据先写到journaled日志,然后才异步写到磁盘. 这个日志类似重做日志. oplog 是操作日志, 用于复制.                      
j : true

wtimeout: 当w>1时,可以设置超时.
wtimeout : 100
<tag set>


备份与恢复
--------------------
使用 mongodump, mongoexport, mongoimport, mongorestore

集群
--------
主节点
mongod --master --dbpath /data/masterdb/ --oplogSize 1024M

从节点
mongod --slave --source <masterhostname><:<port>> --dbpath /data/slavedb/ --autoresync

local.sources 集合(表)
use local
db.sources.find()
db.sources.insert( { host: <masterhostname> <,only: databasename> } );

配置证书
keyFile = /srv/mongodb/keyfile
openssl rand -base64 741






分享到:
评论

相关推荐

    MongoDB教程基础入门

    教程名称:MongoDB教程基础入门 课程目录:【】MongoDB教程基础入门-代码【】MongoDB教程基础入门01第一讲上【】MongoDB教程基础入门02第一讲下【】MongoDB教程基础入门03第二讲上【】MongoDB教程基础入门04第二讲...

    MongoDB 基础.md

    MongoDB 基础

    Mongodb基础知识详解(值得珍藏).pdf

    MongoDB 是一个高性能的NoSQL数据库,以分布式文件存储为基础,提供灵活的数据模型和高效的查询操作。MongoDB 不同于传统的关系型数据库,它采用面向集合的存储方式,支持无模式的数据模型,允许数据自由组织,这...

    MongoDB基础入门到高级进阶

    MongoDB是一个开源、高性能、无模式的文档型数据库,是NoSQL数据库产品中的一种。它的出现主要应对“三高”等问题,它可以解决需要存储数据量大、高并发读写、高可用的现实问题,适用于社交朋友圈、游戏积分、物流...

    MongoDB基础教学文档

    在“MongoDB基础教学文档”中,你可以期待学习到以下几个关键知识点: 1. **数据模型**:MongoDB的数据模型是基于BSON(Binary JSON)的,这种格式允许存储复杂的数据结构,如嵌入式文档和数组。这使得在一个文档内...

    MongoDB基础学习资料

    MongoDB,基础,学习,资料 MongoDB,基础,学习,资料

    MongoDB基础教程

    总之,MongoDB基础教程将引导你全面理解MongoDB的原理和实践,掌握如何使用Java驱动进行数据操作,以及如何优化数据库性能。通过阅读PDF教程和实践代码,相信你将能够快速上手MongoDB并将其应用到实际项目中。

    linux安装mongodb教程

    /usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...

    mongodb基础使用教程

    ### MongoDB基础环境搭建 搭建MongoDB环境的第一步是下载最新版本的安装包。目前,MongoDB社区版的最新稳定版本是3.4.3。下载完成后,需要将安装包解压到相应的目录,例如在CentOS系统中,可以解压到/opt/mongodb...

    mongodb-测试数据

    MongoDB是一种流行的开源、分布式文档数据库,常被用于构建高性能、可扩展的应用程序。这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习...

    mongodb.dll 下载.zip

    正确理解和使用`mongodb.dll`和相应的MongoDB驱动程序是开发和维护MongoDB应用程序的基础。确保你始终使用与MongoDB服务器版本兼容的驱动,以保证最佳的性能和稳定性。在进行任何系统更改前,建议先备份重要数据,...

    MongoDB实验 - .docx

    MongoDB 实验报告 本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要...

    mongodb c#驱动最新驱动mongodb.driver.dll 版本2.12.0-beta1

    MongoDB 是一个流行的开源、基于分布式文件存储的数据库系统,主要设计用于处理大量数据的分布式环境。C# 驱动是 MongoDB 提供的一种客户端库,允许 .NET 开发者与 MongoDB 数据库进行交互。标题提到的是 MongoDB 的...

    mongodb数据库jar包

    总之,这个“mongodb数据库jar包”是Java开发者与MongoDB数据库交互的基础工具,它涵盖了所有必要的API和功能,使开发人员能够充分利用MongoDB的强大功能。通过熟练掌握Java MongoDB驱动,你可以构建高效、可扩展的...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    MongoDB入门指南.pdf

    MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。MongoDB中的每一行记录就是一个文档,它是一个由键值对构成...

    mongodb Windows7 64位

    MongoDB是一款开源、高性能、无模式的文档型数据库,它在现代应用程序开发中扮演着重要的角色,特别是在处理大量非结构化数据时。针对"mongodb Windows7 64位"这个主题,我们将深入探讨MongoDB在Windows 7 64位操作...

    Linux安装mongodb客户端

    sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...

    如何安装MongoDB 如何使用MongoDB

    本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB...

Global site tag (gtag.js) - Google Analytics