MongoDB 学习一
这一章,我们先介绍几个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 学习一的更多相关文章
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- MongoDB学习:(一)MongoDB安装
MongoDB学习:(一)MongoDB安装 MongoDB介绍: 直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...
- MongoDB学习(四)客户端工具备份数据库
在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...
- mongodb学习(1) 第一次开启 mongdb
1.启动mongdb 可以设置为开机启动 mongod -dbpath=/data/mongodb --fork --port 27017 --logpath=/usr/local/mongodb/l ...
- MongoDB学习之--安全和认证
MongoDB学习之--安全和认证 本文主要介绍两部分内容,Mongodb的安全检查配置以及安全认证操作: 虽然确保系统安全是系统管理员的重要工作,但是作为程序员了解其机制也是大有好处的,毕竟不是每个 ...
随机推荐
- 《Vim实用技巧》第2版读书笔记
学习前的建议: 一.如果你需要一个功能强大的文本编辑器,速度飞快.使用方便.代码补全.编程强大.定制性强,Vim就是你需要的: 二.学习入门曲线陡峭,但是使用后期异常简单,效率超高: 三.号称可以跟上 ...
- Codeforces Gym100735 H.Words from cubes-二分图最大匹配匈牙利
赛后补题,还是要经常回顾,以前学过的匈牙利都忘记了,“猪队友”又给我讲了一遍... 怎么感觉二分图的匈牙利算法东西好多啊,啊啊啊啊啊啊啊啊啊(吐血...) 先传送一个写的很好的博客,害怕智障找不到了. ...
- Java中没有C#的out关键字,但可以通过数组实现类似的效果
其实传递的就是数组的指针,里面的每一项的值还是那块内存,所以能直接操作里面的值.如果单纯传指定的值,那么里面操作的就是新的一块内存块. 用数组实现的效果如下: class B{ String cnt= ...
- Ubuntu 16.04安装字体管理工具
注意:这个字体管理工具只是简化了字体的安装和卸载,并没有快速下载字体去自动安装,所有的字体都是需要自行下载,因为字体本身是有版权的. 安装: sudo apt-get install font-man ...
- 作为一个新人,怎样学习嵌入式Linux?
作为一个新人,怎样学习嵌入式Linux? 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会).尝试着写一些C语言竞赛的题目.它们是纯 ...
- iOS --SKView类
SKView类 继承自 UIView:UIResponder:NSObject 符合 NSCoding(UIView)UIAppearance(UIView)UIAppearanceContainer ...
- DEDECMS5.5怎样调用{dede:field.content/}做简介之类的单独页面?
很多时候,如果用dede来做一些企业公司网站,或者一些部门网站的时候.需要某些栏目是一个单页的文章,用于公司简介或者企业文化之类的.那么就要用到栏目功能的栏目内容,也就是dede的content标签. ...
- DICOM医学图像处理:Deconstructed PACS之Orthanc,Modification & Anonymization
背景: 上篇博文为引子,介绍了一款神奇的开源PACS系统——Orthanc.本篇开始解读官方Cookbook中的相关内容,对于简单的浏览.访问和上传请阅读前篇博文.在常规的PACS系统中还未出现对于D ...
- Service 层实现
一.实验介绍 1.1 实验内容 本节课程主要利用 Spring 框架实现 Service 层. 1.2 实验知识点 Spring 框架 1.3 实验环境 JDK1.8 Eclipse JavaEE 二 ...
- myBatis-plus异常提示For input string: "{0=null}"
异常信息 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.Per ...