MongoDB教程之入门基础知识

一、文档的注意事项:

1.  键值对是有序的,如:{ "name" : "stephen", "genda" : "male" } 不等于 { "genda" : "male", "name" : "stephen" }
2.  文档信息是大小写敏感的,如:{ "name" : "stephen" } 不等于 { "Name" : "stephen" }
3.  文档信息是区分类型的,如:{ "age" : 30 } 不等于 { "age" : "30" }
4.  文档中不能出现重复键,如:{ "name" : "stephen", "name" : "liu" }

二、使用多个集合的必要性:

1.  如果把各种模式的文档存放在一个集合中,对于开发者来说是非常灾难的。因为在获取到查询结果之后,就需要手工编写代码过滤不同类型的文档了。
2.  会使查询效率降低。试想一下,假设某个模式的文档的数据量相对较少,如果仍然将其放到一个通用的大集合中,其查询效率势必会大大低于将其放到独立的集合中。
3.  在创建索引时,如果所有的文档均为同一模式,那么索引的利用率将会更加高效。

三、集合的命名注意事项:
1.  集合名不能是空字符串""。
2.  不要以system开头,这一般是为系统保留的,如system.users集合中保存了数据库的用户信息,而system.namespace集合中保留了数据库集合的信息。
3.  不要在集合名里面包含'$'字符。
4.  子集合只是一种较好的集合规划方式,如blog.posts和blog.anthurs,实际上它们和blog集合之间没有任何关系,甚至blog集合可以不存在。

四、数据库:

在同一个MongoDB服务器中可以存在多个数据库,每个不同的数据库存储在不同的文件中。又由于数据库名和文件名是绑定的,因此数据库名会有一些限制。
1.  不能是空字符""。
2.  全部小写且不超过64字节。
3.  不得含有文件名命名中的非法字符。
4.  admin数据库是管理数据库,如果某个用户位于该数据库中,他将自动继承所有数据库权限。一些特定的服务器命令也只能从这个数据库运行。
5.  local这个数据库永远不会被复制,只是用于存储限于本地单台服务器的任意集合。
6.  数据库名.集合名,表示该集合的完全限定名,其长度不要超过121自己。

五:MongoDB的启动:

1.  直接执行mongod即可,在没有任何命令行参数的情况下,服务器的主机中必须包含/data/db目录,对于Windows而言,其缺省目录则为服务程序所在驱动器的\data\db。如D盘,则为D:\data\bin。缺省监听端口为27017。
2.  MongoDB自带了一个JavaScript Shell,可以从命令行与MongoDB交互。如:mongo。这个Shell工具可以直接执行简单的数学运算。如:

代码如下:

> x = 200
    200
    > x /5
    40
    --还可以调用JavaScript的标准库。
    > new Date("2012/05/05")
    ISODate("2012-05-04T16:00:00Z")
    > "Hello World".replace("World", "MongoDB")
    Hello MongoDB
    --定义和调用自定义的JavaScript函数。
    > function factorial(n) {
    ... if (n <= 1) return 1
    ... return n * factorial(n - 1)
    ... }
    > factorial(5)
    120

3.  在Shell客户端插入MongoDB的文档,如:

代码如下:

> post = { "title" : "my blog post", "content" : "Here's my blog", "date" : new Date() }
    {
         "title" : "my blog post",
         "content" : "Here's my blog",
         "date" : ISODate("2012-06-04T07:38:51.345Z")
    }
    > db.blog.insert(post)
    > db.blog.find()
    { "_id" : ObjectId("4fcc661de4bcbac15b3d9e3a"), "title" : "my blog post", "content" : "Here's my blog",
    "date" : ISODate("2012-06-04T07:38:51.345Z") }

4.  在Shell客户端查询文档,如:

代码如下:

> db.blog.findOne()
    {
         "_id" : ObjectId("4fcc661de4bcbac15b3d9e3a"),
         "title" : "my blog post",
         "content" : "Here's my blog",
         "date" : ISODate("2012-06-04T07:38:51.345Z")
    }

5.  在Shell中更新文档,如:

代码如下:

--需要先更新post变量的内容,即先增加了一个comments的键,其值为空数组。
    > post.comments = []
    [ ]
    --update的第一个参数是条件,第二个参数是待更新的值。
    > db.blog.update({ "title" : "my blog post"}, post)
    > db.blog.findOne()
    {
         "_id" : ObjectId("4fcc661de4bcbac15b3d9e3a"),
         "title" : "my blog post",
         "content" : "Here's my blog",
         "date" : ISODate("2012-06-04T07:38:51.345Z"),
         "comments" : [ ]
    }

6.  在Shell客户端中删除,如:

代码如下:

--如果remove中没有条件,则清除集合中的全部数据。
    > db.blog.remove( { title:"my blog post"})
    > db.blog.findOne()
    null

六、Shell的使用小技巧:

代码如下:

> show dbs  --显示数据库名。
    > show collections --显示集合名
    > show users --显示用户名
    > db.help()  --列出数据库的方法。
    > db.blog.help() --列出blog集合上的方法。
    > db.blog.update --可以直接看update方法的JavaScript实现代码。

(0)

相关推荐

  • MongoDB教程之索引介绍

    一.索引基础: MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:   复制代码 代码如下: > db.test.ensureIndex({"username":1}) 可以通过下面的名称查看索引是否已经成功建立:   复制代码 代码如下: > db.test.getIndexes() 删除索引的命令是:   复制代码 代码如下: > db.test.dropIndex({"username"

  • MongoDB教程之入门基础知识

    一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" : "male" } 不等于 { "genda" : "male", "name" : "stephen" } 2.  文档信息是大小写敏感的,如:{ "name" : "stephen" } 不等于

  • Vue 2.0入门基础知识之内部指令详解

    1.Vue.js介绍 当前前端三大主流框架:Angular.React.Vue.React前段时间由于许可证风波,使得Vue的热度蹭蹭地上升.另外,Vue友好的API文档更是一大特色.Vue.js是一个非常轻量级的工具,与其说是一个MVVM框架,不如说是一个js库.Vue.js具有响应式编程和组件化的特点.响应式编程,即保持状态和视图的同步,状态也可以说是数据吧:而其组件化的理念与React则一样,即"一切都是组件,组件化思想方便于模块化的开发,是前端领域的一大趋势. 2.内部指令 2-1.v-

  • JavaScript入门教程(2) JS基础知识

    在什么地方插入 JavaScript JavaScript 可以出现在 HTML 的任意地方.使用标记<script>-</script>,你可以在 HTML 文档的任意地方插入 JavaScript,甚至在<HTML>之前插入也不成问题.不过如果要在声明框架的网页(框架网页)中插入,就一定要在<frameset>之前插入,否则不会运行.基本格式 复制代码 代码如下: <script> <!-- ... (JavaScript代码) ...

  • PHP基础教程(php入门基础教程)一些code代码

    在此教程之前,我就不长篇一律的说什么PHP的常用了. 关于什么是变量呀什么是判断语句呀什么的,请自行查询相关资料此教程值针对于有编程基础,且对PHP陌生的人看.文章比较简单.主要看结构.详细的还请大家自己多多研究 PHP环境安装: PHP通常组合是 :MySql+PHP+Apche 也有 IIS+PHP+MySQL或SqlServer 当然我们可以进行选择组合包来进行安装. 新手建议装AppServ或phpnow等. iis下可以用这个安装运行一下就支持php了,mysql需要安装一下. 也可以

  • java RocketMQ快速入门基础知识

    如何使用 1.引入 rocketmq-client <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.1.0-incubating</version> </dependency> 2.编写Producer DefaultMQProducer produce

  • JavaScript 入门基础知识 想学习js的朋友可以参考下

    stringObject.charAt(index)方法:返回指定索引位置处的字符. stringObject.slice(start,[end])和stringObject.substring(start,[end])方法都接受两个参数,分别为子字符串的起始位置和终止位置,返回这两者之间的字符串,不包括终止位置的那个字符串.如果不指定第二个参数,则默认为字符串的长度,即从起始位置到字符串的末尾. [区别]这两个方法的区别主要是对于负数的处理不同.负数参数对于slice()而言是从字符串的末尾往

  • jQuery入门基础知识学习指南

    打开一个网页,如果 HTML 没有完全加载完毕,就去操作页面中元素是不安全的,但是监测 HTML 是否加载完毕呢?jQuery 提供了一个 $(document).ready() 方法,任何 ready 中的代码在 HTML 完全加载完成后才会被执行. $(document).ready(function() { console.log('ready!'); }); 此外,它还有一个简写方式 $(function() { console.log('ready!'); }); $(document

  • Django基础知识与基本应用入门教程

    本文实例讲述了Django基础知识与基本应用.分享给大家供大家参考,具体如下: MVC模式和MTV模式 MVC model view controller MTV model templates view controller Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM)        Template(模版):负责如何把页面展示给用户        View(视图):负责业务逻辑,并在适当的

  • Java 网络爬虫基础知识入门解析

    前言 说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic .我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知

  • Vue全家桶入门基础教程

    1. Vue概述 Vue(读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用. 渐进式: 声明式渲染→组件系统→客户端路由→集中式状态管理→项目构建 可以使用其中的一个或者多个 优点: 易用:熟悉HTML,CSS.JavaScript知识后,可快速上手Vue 灵活:在一个库和一套完整框架之间自如伸缩 高效:20kB运行大小,超快虚拟DOM 2. Vue的基本使用 2.1 传统开发模式对比 /

随机推荐