MongoDB学习——持续更新

參考MongoDB权威指南,学习阶段。大家多多交流问题。持续更新本文

MongoDB的长处
MongoDB具有丰富的数据模型,是面向文档的数据库。

easy扩展。能够在多台server之间切割数据。

开发人员仅仅需专注于编写应用。假设须要更大的数据。仅仅需在集群中加入新机器,然后让数据库来处理剩下的事情。


具有丰富的功能,比方索引,存储JavaScript,聚合,固定集合。文件存储。

不支持联接(join)和复杂的多行事物。


卓越的性能是MongoDB的主要目标,默认的存储引擎使用了内存映射文件。将内存管理工作交给操作系统。


简便的管理,MongoDB尽量让server自己管理数据库。除了启动数据库server之外。差点儿没有什么必要的管理操作。

假设主server挂掉,会自己主动切换到备server上。

MongoDB的下载和安装
首先去MongoDB官网,依据系统型号选择要下载的版本号。这里以centos64位为例
    #下载

    > wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.4.tgz
    > tar -zxvf mongodb-linux-x86_64-3.0.4.tgz
    > mv mongodb-linux-x86_64-3.0.4 /usr/local/mongodb
    > cd /usr/local/mongodb
    > mkdir db
    > mkdir logs

    > vim bin/mongodb.conf

    #加入下面内容

    dbpath=/usr/local/mongodb/db
    logpath=/usr/local/mongodb/logs/mongodb.log
    port=27017
    fork=true

    #又一次绑定mongodb的配置文件地址和訪问IP

    > /usr/local/mongodb/bin/mongod --bind_ip localhost -f /usr/local/mongodb/bin/mongodb.conf

    #启动MongoDB
    > /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf

    #測试是否开启成功进入mongodb的shell模式
    > /usr/local/mongodb/bin/mongo
    > show dbs
    #没有异常的话安装启动成功了。
MongoDB的基本概念

文档是MongoDB中数据的基本单元,很相似关系型数据库中的行。


相似地。集合能够看做是没有模式的表。


MongoDB的单个实例能够容纳多个独立的数据库。每个都有自己的集合和权限。


MongoDB自带间接可是功能强大的JavaScript shell,这个工具对管理MongoDB实例和操作数据作用很大。


每个文档都有一个特殊的键”_id”,它在文档所处的集合中是唯一的。

MongoDB shell操作
执行shell
    #进入shell模式
    > /usr/local/mongodb/bin/mongo

    #执行简单的计算
    > x=200
    200
    > x/5
    40

    #还可充分利用JavaScript的标准库
    > Math.sin(Math.PI / 2)
    1
    > "Hello World!".replace("World","MongoDB")
    Hello MongoDB!

    #shell (CRUD)
    #创建tets数据库
    > use test;
    > db
    test

    #创建一个用户
    > user={"name":"zhangsan","age":18};
    { "name" : "zhangsan", "age" : 18 }
    > db.users.insert(user);
    WriteResult({ "nInserted" : 1 })

    #查询
    #find会返回集合里的全部记录,在shell中最多显示20条数据,findOne会显示一条数据
    > db.users.findOne();
    {
    "_id" : ObjectId("55b59ee00882afbc7416fed4"),
    "name" : "zhangsan",
    "age" : 18
    }

    #更新
    #改动name=zhangsan用户的年龄为20,加入个性别sex=1
    > user.sex=1
    1
    > user.age=20
    20
    > db.users.update({"name":"zhangsan"},user);
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.findOne();
    {
    "_id" : ObjectId("55b59ee00882afbc7416fed4"),
    "name" : "zhangsan",
    "age" : 20,
    "sex" : 1
    }

    #删除
    > db.users.remove({"name":"zhangsan"});
    WriteResult({ "nRemoved" : 1 })

    #shell帮助文档
    > help
    db.help()                    help on db methods
    db.mycoll.help()             help on collection methods
    sh.help()                    sharding helpers
    rs.help()                    replica set helpers
    help admin                   administrative help
    help connect                 connecting to a db help
    help keys                    key shortcuts
    help misc                    misc things to know
    help mr                      mapreduce

    show dbs                     show database names
    show collections             show collections in current database
    show users                   show users in current database
    show profile                 show most recent system.profile entries with time >= 1ms
    show logs                    show the accessible logger names
    show log [name]              prints out the last segment of log in memory, ‘global‘ is default
    use <db_name>                set current database
    db.foo.find()                list objects in collection foo
    db.foo.find( { a : 1 } )     list objects in foo where a == 1
    it                           result of the last line evaluated; use to further iterate
    DBQuery.shellBatchSize = x   set default number of items to display on shell
    exit                         quit the mongo shell

    #了解函数源码。比方update方法。输入的时候不带括号
    > db.foo.update

时间: 2024-12-09 17:18:17

MongoDB学习——持续更新的相关文章

Linux指令学习(持续更新)

ls:列出目录内容 例:[email protected]:~$ ls touch:用于创建一个新的空白文件,如果文件已存在,则刷新修改日期. [email protected]:~/demo$ ls [email protected]:~/demo$ touch demo.txt [email protected]:~/demo$ ls demo.txt file:查看文件类型 ~$ file killouterr.txt cat:查看文本文件内容 $ cat killouterr.txt c

JAVA native 学习 [持续更新]

最近查看ZipFile的源码,发现了native声明,学习一下,下面是整理的一些资料. java native方法及JNI实例 http://blog.csdn.net/xw13106209/article/details/6989415 JNI学习笔记(七)——异常处理 http://blog.csdn.net/ljeagle/article/details/6728930

flask插件全家桶集成学习---持续更新ing

不得不说flask的设计要比django要小巧精妙的多了,没有那么臃肿,只保留核心功能,其他的都需要自己引入,即各种各样的插件来满足我们的需求,我这里记录一下自己学习项目中用的插件使用方法和一些技巧总结! 先放一下代码地址: https://gitee.com/houzheng1216/pythonxuexi/tree/master/flask/fristflask 一 flask-cli 二 flask-debugToolbar 三 flask-WTF 四 flask-security 五 f

python 学习(持续更新......)

1.Python没有数组,但是列表 (list) 跟数组很像:Python的元组 (tuple) 与列表相似,但是元组的元素不能 修改: 列表使用方括号,元组使用小括号,其实可以把元组看成是只读的列表: 在Python中,空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False 2.%s操作符的使用 3.正则匹配(re  正则表达式模块) 字符串里,每个反斜杠都要写成 \\ ,例如 s='\\' 4.设置编码,在xxoo.py里写 import sys reloa

vue element学习持续更新

npm 安装 npm i element-ui  -S 引入elementui 找到入口文件mian.js /***************************/ import Vue from 'vue'import ElementUI from 'element-ui'import 'element-ui/lib/theme-default/index.css' //样式一定要单独引入import App from './App'import router from './router'

linux学习资料持续更新中

一.LINUX基础教程 1.老男孩系列免费视频: 1) linux高薪入门实战视频教程(第二部)老男孩linux教程 http://edu.51cto.com/course/course_id-1035-page-1.html 2) 跟着老男孩从0开始一步步实战深入学习linux运维(三) http://edu.51cto.com/lesson/id-11909.html linux学习资料持续更新中,布布扣,bubuko.com

cocos2d-x 学习资源整理(持续更新...)

生活像一把无情刻刀,改变了我们模样,曾经我以为会亘古不变的东西,突然在一瞬间失去了信念... 如果你改变不了生活中患得患失的心情,那就试着让自己变得强大一点,因为能做到不以物喜不以己悲都是建立在强大的基础上面的. so,加油吧,少年. ================================================================ 一不小心又废话了. 学习cocos2d-x也有一段时间了,直到现在仍然认为自己是个新手(呵呵,说的好像我不是新手一样.) 现在把自己这

Arduino语言学习记录(持续更新)

几天前某宝买了一套,这几天没工夫.今天开始学学这个“玩具”. 1.Arduino的变量数据类型: 数据类型  数据类型 RAM 范围 void keyword N/A N/A boolean 1 byte 0 到 1(True 或 False) byte 1 byte 0 到 255 char 1 byte -128 到 127 unsigned char 1 byte 0 到 255 int 2 byte -32768 到 32767 unsigned int 2 byte 0 到 65535

学习中遇到的c++问题,持续更新

向上取整 使用ceil函数.ceil(x)返回的是大于x的最小整数.如: ceil(2.5) = 3 ceil(-2.5) = -2 学习中遇到的c++问题,持续更新