这一章,我们先介绍几个MongoDB的概念:

1.document: 它是MongoDB的基础数据单元,它大概等价于关系型数据库中的行。

2.collection: 可以想象成动态的表。

3.一个简单的MongoDB实例可以携带多个独立的数据库,每个数据库都有属于自己的collections。

4.每个document都有自己特殊的key。"_id",它在collection中是唯一值。

5.MongoDB提供了一个简单而又强大的JavaScript Shell,这对管理MongoDB实例和数据操作十分有用。

Documents

MongoDB的核心就是document。它其实是一个对象(键值对),例:

{"greeting":"Hello,world!"}

当然大多数的document比上面这个复杂的多,它的value可以有多种类型,当然还可以嵌套document,后续会进行介绍。

document的key值都是string类型。任何的utf-8字符都允许出现在key中,但有几个值得注意的地方:

1.key不能包含字符 \0。

2. .和$字符应该最为保留字符,它们含有特殊的属性并在某些情况中会用到。

MongoDB是类型敏感和大小写敏感的,举个例子:

{"foo":3}
{"foo":"3"}

上面例子的两个object是不相等的。

document中不能包含重复的key值,这是不合法的。

Collections

collections是一组document的集合,类似于关系型数据库中的表。不过collection可以是动态的。例如:

{"greeting":"Hello,World!"}
{"foo":5}

上面这两个document可以存在同一个collection中。

这样我们就会有一个疑问,既然collection是动态的,可以存不同的document,那么我们为什么要将collection根据不同的document分离成多个collecion呢?

原因:

1.保存不同类型的document对程序员来说是个噩梦,因为我们做某些查询的时候,程序员必须确定返回的值里只有A类型的document,这时清除不要的数据会很麻烦。

2.查询速度。

3.建立索引。

Databases

每个数据库都有它的权限,并且作为一个单独的文件存放在硬盘上。

数据库名字命名规则:

1.不能以空“”作为数据库名字

2.不能包含字符:/,\,.,",*,<,>,:,|,?,$,一个单独的空格,\0。

3.数据库名字大小写敏感,建议都用小写字符

4.数据库名字最大64位。

5.数据库名字有保留字,有特殊意义(admin,local,config)

Introduction to the MongoDB Shell

MongoDB Shell是一个功能齐全的JavaScript解释器,可以跑任意的JavaScript程序,我们还能利用所有标准的JavaScript库。

甚至我们还可以定义及调用JavaScript函数。你可以创建多行命令,当你按回车键时,Shell会检测你的JavaScript脚本是否已完成。

连按三次回车键会取消输入一半的命令并且会给你>-的返回提示。

Basic Operations with the Shell

Create

设想我们想要保存一篇博客,首先我们创建一个变量post,它作为一个JavaScript的一个对象来代表document。并且包含key值"title","content","data"

> post={
... "title:"MyBlog Post",
... "content":"Here's my blog post.",
... "date":new Date()
... }

下来我们直接执行插入方法:

> db.blog.insert(post)

这是,这条数据就保存到数据库中了。 下来我们执行查询方法:

> db.blog.find()

就能看到我们刚刚插入的数据了。

Update

update有两个参数,第一个是用来查找要更新的document,第二个是新的document。

> post.comments=[]
>db.blog.update({"title":"MyBlog Post"},post)

上面代码是要给post添加一个comments的字段。

Delete

db.blog.remove({"title":"MyBlog Post"})

_id and ObjectIds

每个保存在MongoDB中的document都有key值“_id”。 它可以是任何类型,但是默认的是ObjectId.在一个collection钟,每个document都有唯一的"_id"值,保证它是唯一的。

ObjectIds在被设计时就是轻量级的。他在多台机器中很容易的就能生成全局的唯一值。 MongoDB的分布式性质决定了为什么使用objectId而不是用传统的主键生成方式,例如自动增量。它在自动同步多台机器的主键时十分耗费时间。

待续...

MongoDB 学习一的更多相关文章

  1. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  2. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  3. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  4. MongoDB学习记录

    一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...

  5. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  6. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  7. MongoDB学习:(一)MongoDB安装

    MongoDB学习:(一)MongoDB安装 MongoDB介绍:     直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...

  8. MongoDB学习(四)客户端工具备份数据库

    在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...

  9. mongodb学习(1) 第一次开启 mongdb

    1.启动mongdb 可以设置为开机启动 mongod -dbpath=/data/mongodb --fork --port 27017 --logpath=/usr/local/mongodb/l ...

  10. MongoDB学习之--安全和认证

    MongoDB学习之--安全和认证 本文主要介绍两部分内容,Mongodb的安全检查配置以及安全认证操作: 虽然确保系统安全是系统管理员的重要工作,但是作为程序员了解其机制也是大有好处的,毕竟不是每个 ...

随机推荐

  1. 45深入理解C指针之---指针释放

    一.size_t:用于安全表示长度,所有平台和系统都会解析成自己对应的长度 1.定义:size_t类型表示C中任何对象所能表示的最大长度,是个无符号整数:常常定义在stdio.h或stdlib.h中 ...

  2. [leetcode]84.Largest Rectangle in Histogram ,O(n)解法剖析

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  3. windows命令行更改IP地址

    修改IP地址时,提示出现一个意外情况 netsh interface ip set address "以太网" static 192.168.3.151 255.255.255.0 ...

  4. 网络入侵检测规避工具fragrouter

    网络入侵检测规避工具fragrouter   网络入侵检测系统可以通过拦截数据包,获取内容进而判断是否为恶意数据包.对于传输较大的数据包,通常会采用分片的方式,将大数据包拆分为小数据包进行传输.如果入 ...

  5. Android Service实现双向通信(一)

    首先,大概来总结一下与Service的通信方式有很多种: 通过BroadCastReceiver:这种方式是最简单的,只能用来交换简单的数据: 通过Messager:这种方式是通过一个传递一个Mess ...

  6. 【GitHub】给GitHub上的ReadMe.md文件中添加图片怎么做 、 gitHub创建文件夹

    1.首先在github上的仓库上,创建一个空的文件夹,用于上传图片 上图看 要点击的按钮是创建新的文件,并不是创建新的文件夹,具体怎么?往下看 这个时候,下面的提交按钮才能提交 2.进入新创建的文件夹 ...

  7. 解决mac osx下pip安装ipython权限的问题

    1 pip install ipython --user -U 下面是pip install gevent的错误提示, 又是 Operation not permitted …   1 2 3 4 5 ...

  8. tensorflow搭建神经网络基本流程

    定义添加神经层的函数 1.训练的数据2.定义节点准备接收数据3.定义神经层:隐藏层和预测层4.定义 loss 表达式5.选择 optimizer 使 loss 达到最小 然后对所有变量进行初始化,通过 ...

  9. hive界面工具SQL Developer的安装;使用sql developer连接hive;使用sql developer连接mysql

    需要oracle帐号登录后下载 1.下载: http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/inde ...

  10. zerorpc的安装

    1.简介及安装 rpc使构建分布式系统简单许多,在云计算的实现中有很广泛的应用 rpc可以是异步的 python实现rpc,可以使用标准库里的SimpleXMLRPCServer,另外zerorpc是 ...