这一章,我们先介绍几个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. hdu 5444(构造二叉树然后遍历)

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  2. 关于Redux到底是个什么鬼

    原文链接:https://zhuanlan.zhihu.com/p/20641377 我们故事的主人公,小明. 小明大学刚毕业,摆脱了宿舍的集体生活,自己在外面租了个一室一厅的小公寓住. 这是客厅的平 ...

  3. tableView刷新中的问题

    在开始之前先上一张效果图 相信大家都看到了“店铺优惠”这一栏,在这里假设这一栏就是单独的一个cell,当无店铺优惠的时候不可点击在有店铺优惠的时候会弹出优惠列表,选中并返回时会刷新数据,所以弹出视图采 ...

  4. UVA 11090 Going in Cycle!! SPFA判断负环+二分

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. luogu P1879 [USACO06NOV]玉米田Corn Fields

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  6. Java实验--关于英文短语词语接龙

    在课堂上经过实验之后,重新在宿舍里面从0开始编写大概30分钟左右能够完成这个实验,不是原来的思路. 该实验的表述为:从两个文本input1.txt和input2.txt中读取英文单词,若前面的英文单词 ...

  7. Codeforces 471 D MUH and Cube Walls

    题目大意 Description 给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. Input 第一行给出数字N.N在[2,1000000 ...

  8. IDEA一个窗口打开多个项目

    首先IDEA没有Eclipse的Workspace的概念,且IDEA推荐是一个窗口对应着一个Project. 然后经过研究你会发现IDEA其实是由一个主进程来维护这些窗口的,所以即使你开了很多个窗口, ...

  9. 在DevExpress GridControl中添加进度条控件 z

    首先可以使用 DevExpress GridControl 自带的进度条控件. 但是我要用一个方法来设置所有的单元格进度,而不是每个单元格都要设置一遍,同时我想要根据进度值不同,进度条显示不同的颜色. ...

  10. 关于JavaScript禁止点击事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...