MongoDB入门

MongoDB简介
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。
旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,
是非关系数据库当中功能最丰富,最像关系数据库的。
它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,
几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

特点:
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
mongodb集群参考
mongodb集群参考
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性。
*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
*文件存储格式为BSON(一种JSON的扩展)。
*可通过网络访问。


适用场景
MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS 系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,Mongo 适用于以下场景。
● 网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
● 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。
● 大尺寸、低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
● 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。
● 用于对象及JSON 数据的存储:Mongo 的BSON 数据格式非常适合文档化格式的存储及查询。
MongoDB 的使用也会有一些限制,例如,它不适合于以下几个地方。
● 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
● 传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
● 需要SQL 的问题。

应用案例
下面列举一些公司MongoDB的实际应用:
Craiglist上使用MongoDB的存档数十亿条记录。
FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。


安装
获取安装包
    wget http://downloads.mongodb.org/linux/mongodb-linux-i686-2.4.9.tgz 
    
解压
    tar -zxvf mongodb-linux-i686-2.4.9.tgz
    
移动文件夹到/usr/local下
    sudo mv mongodb-linux-i686-2.4.9 /usr/local/mongo
    
创建数据库存放目录和日志存放目录
    sudo mkdir -p /data/mongo/data  
    sudo touch /data/mongo/dblogs
    
启动MongoDB
    /usr/local/mongodb/bin/mongod --dbpath=/data/mongo/data --logpath=/data/mongo/dblogs  --logappend  --fork  

    启动命令常用参数说明:
        --dbpath                指定数据库文件存放的目录
        --port                  指定mongod服务使用的端口默认27017
        --fork                  设置mongo服务为后台运行
        --logpath               指定log文件的目录和文件名
        --logappend             设置每次log添加在文件最后
        --journal               启用日志
        --pidfilepath           指定进程文件的路径,如果不指定,系统将不产生进程
        --maxConns              最大并发连接数
        --noprealloc            关闭数据文件的预分配功能
        --rest                  关闭rest api功能
        --nohttpinterface       关闭web管理功能
        --auth                  指定mongo使用身份验证机制
        --bind_ip               绑定ip
        
进入MongoDB
    /usr/local/mongo/bin/mongo
    
    测试脚本1 算数表达式
        1+2
        3*5
    测试脚本2 插入数据
        db.runoob.insert({a:10})
        db.runoob.insert({b:10})
        db.runoob.insert({b:30})
    测试脚本3 查询数据
        db.runoob.find()
        

访问web管理端
    http://ip地址:28017
    
    MongoDB默认访问端口27017

### MongoDB入门教程 MongoDB 是一种面向文档的 NoSQL 数据库,它使用 BSON(Binary JSON)格式存储数据,并支持灵活的模式设计。以下是 MongoDB 的基础知识: #### 1. 安装与配置 为了将 MongoDB 配置为服务,需要以管理员身份运行命令提示符并进入 MongoDB 的 `bin` 文件夹。例如: ```bash d: cd D:\MongoDB\Server\3.4\bin ``` 然后运行以下命令以安装 MongoDB 服务[^1]: ```bash mongod --bind_ip 0.0.0.0 --logpath D:\MongoDB\Server\3.4\data\logs\mongo.log --logappend --dbpath D:\MongoDB\Server\3.4\data\db --port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install ``` #### 2. 基本操作 - **插入数据**:可以使用 `insertMany` 方法向集合中插入多条数据。例如: ```javascript db.books.insertMany([{"userName":"Jack","age":20},{"userName":"Tom"}]); ``` 注意,MongoDB 中的代码是区分大小写的[^5]。 - **查询数据**:可以通过 `find` 方法查询集合中的数据。例如,查询所有由 "tutorials point" 发表且标题为 "MongoDB Overview" 的教程: ```javascript db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty(); ``` #### 3. 数据建模 在项目开发中,通常会使用 Mongoose 模块来定义数据模型和方法。例如,在 `stuModels.js` 文件中定义学生模型并暴露 `insert` 和 `query` 方法[^3]: ```javascript // 导入模块 var mongoose = require("mongoose"); // 连接数据库 const db = mongoose.createConnection('mongodb://shop2:123456@localhost:27017/shop', { useNewUrlParser: true, useUnifiedTopology: true }, err => { if (err) { console.log('数据库连接失败', err); return; } console.log('数据库连接成功'); }); // 设置数据类型 const model = db.model('stu', { name: { type: String, default: "zsr" }, age: { type: Number }, sex: { type: String } }); // 添加学生方法 const insert = postData => { const insertObj = new model(postData); return insertObj.save() .then(res => res) .catch(err => { console.log('插入失败' + err); return false; }); }; // 查询所有学生方法 const query = () => { return model.find() .then(res => res) .catch(err => { console.log('查询失败' + err); return false; }); }; // 导出方法 module.exports = { insert, query }; ``` #### 4. 聚合操作 MongoDB 提供了强大的聚合框架,用于执行复杂的分析任务。例如,通过 `$group` 对文档进行分组并计算总和[^4]: ```javascript db.collection_name.aggregate([ { $group: { _id: "$field", total: { $sum: "$value" } } } ]); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值