MongoDB基础知识 

1. 文档 

文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行。

文档是键值对的一个有序集。通常包含一个或者多个键值对。

例如:

{”greeting" : "Hello, world!", "foo", 3}

2. 集合(collection)

集合就是一组文档,类似关系型数据库中的一张表。

3. 数据库(database)

多个文档组成集合,多个集合组成数据库。一个MongoDB实例可以承载多个数据库。

MongoDB中保留的有特殊语义的数据库:admin, local, config。

4. 启动MongoDB

运行mongod,启动数据库服务器。

Last login: Fri Aug 22 11:03:36 on ttys001
zhangxindeMacBook-Pro:~ zhangxin$ mongod
mongod --help for help and startup options
2014-08-22T11:51:55.900+0800 [initandlisten] MongoDB starting : pid=596 port=27017 dbpath=/data/db 64-bit host=zhangxindeMacBook-Pro.local
2014-08-22T11:51:55.901+0800 [initandlisten]
2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2014-08-22T11:51:55.901+0800 [initandlisten] db version v2.6.4
2014-08-22T11:51:55.901+0800 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
2014-08-22T11:51:55.901+0800 [initandlisten] build info: Darwin bs-osx108-4 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 13:33:47 PDT 2013; root:xnu-2050.48.12~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
2014-08-22T11:51:55.901+0800 [initandlisten] allocator: system
2014-08-22T11:51:55.901+0800 [initandlisten] options: {}
2014-08-22T11:51:55.902+0800 [initandlisten] journal dir=/data/db/journal
2014-08-22T11:51:55.902+0800 [initandlisten] recover : no journal files present, no recovery needed
2014-08-22T11:51:55.996+0800 [initandlisten] waiting for connections on port 27017

mongod在没有参数的情况下会使用默认数据目录,/data/db (windows系统中是C:\data\db),如果目录不存在或者不可写,服务器启动会失败。

在mac或者linux下可以用mkdir -p /data/db/ ,确保创建的目录有写权限。

关闭mongod,可用 Ctrl + C来关闭。

5. MongoDB shell 简介

在确保mongod 已经启动的情况下,打开一个新的命令行运行mongo启动shell。

Last login: Fri Aug 22 11:51:24 on ttys001
zhangxindeMacBook-Pro:~ zhangxin$ mongo
MongoDB shell version: 2.6.4
connecting to: test
Server has startup warnings:
2014-08-22T11:51:55.901+0800 [initandlisten]
2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

shell是一个功能完备的JavaScript解释器,可运行任何JavaScript程序。

5.1 要查看当前指向哪个数据库,可以使用db命令:

为方便SQL shell的用户,shell还包含了一些非JavaScript语法的扩展。

选择数据库使用use + dbname(数据库名称),再使用db 查看db变量,则发现已经指向了dbname数据库。

Last login: Fri Aug 22 11:51:24 on ttys001
zhangxindeMacBook-Pro:~ zhangxin$ mongo
MongoDB shell version: 2.6.4
connecting to: test
Server has startup warnings:
2014-08-22T11:51:55.901+0800 [initandlisten]
2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
> db
test
> use zhangxindb
switched to db zhangxindb
> db
zhangxindb
>

5.2 shell 中的基本操作

5.2.1 创建

insert 函数可将一个文档添加到集合中。

创建一个名为post的局部变量,这是一个JavaScript对象,用于表示我们的文档。

> post = {"title":"My Blog Post", "content":"Here's my blog post.", "date":new Date() }
{
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2014-08-22T03:53:31.624Z")
}
>

这个对象是一个有效的MongoDB文档,用insert方法保存到blog集合中。

> db.blog.insert(post)
WriteResult({ "nInserted" : 1 }) > db.blog.findOne()
{
"_id" : ObjectId("53f6bee6ef70aed220766a98"),
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2014-08-22T03:53:31.624Z")
}
>

5.2.2 读取

find和findOne()方法可以用于查询集合里的文档。如上图中所示。

5.2.3 更新

使用update修改博客文章。update方法至少接收两个参数,第一个是限定条件,第二个是新的文档。比如:

> post.comments = []
[ ]
> post
{
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2014-08-22T03:53:31.624Z"),
"comments" : [ ]
}
> db.blog.update({title:"My Blog Post"},post)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.blog.findOne()
{
"_id" : ObjectId("53f6bee6ef70aed220766a98"),
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2014-08-22T03:53:31.624Z"),
"comments" : [ ]
}
>

4. 删除

使用remove方法可将文档从数据库中永久删除。如果没有任何参数,会将集合内所有文档全部删除。

> db.blog.remove({title:"My Blog Post"})
WriteResult({ "nRemoved" : 1 })
> db.blog.findOne()
null

本文适合零基础并且想快速入门的同学,写的非常简略简单就是为了用最短的时间入门,在入门后,再逐步深入,细细挖掘。不适合有基础,或者想慢慢啃的同学,相当于是快餐吧。有错误请不吝赐教。

参考资料:《MongoDB权威指南》

试验环境:mac 64位

MongoDB基础知识 01的更多相关文章

  1. Mongodb 笔记01 MongoDB 简介、MongoDB基础知识、启动和停止MongoDB

    MongoDB 简介 1. 易于使用:没有固定的模式,根据需要添加和删除字段更加容易 2. 易于扩展:MongoDB的设计采用横向扩展.面向文档的数据模型使它能很容易的再多台服务器之间进行分割.自动处 ...

  2. MongoDB基础知识 02

    MongoDB基础知识 02 6 数据类型 6.1 null : 表示空值或者不存在的字段 {"x":null} 6.2 布尔型 : 布尔类型只有两个值true和false {&q ...

  3. DataBase MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  4. MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  5. 常见问题:MongoDB基础知识

    常见问题:MongoDB基础知识 ·MongoDB支持哪些平台? ·MongoDB作为托管服务提供吗? ·集合(collection)与表(table)有何不同? ·如何创建数据库(database) ...

  6. MongoDB 基础知识

    一. 基础知识 1. MongoDB是一个文档型的数据库,文档就是一个键值对的有序集合. 例如这样:{"greeting":"hello world"} 2. ...

  7. AI-图像基础知识-01

        目前人工智能Artificial Intelligence主要分为两大分支: 计算机视常见:Computer Vision,简称CV   CV主要是研究如何让机器看懂世界的一种技术,通过各种光 ...

  8. CSS基础知识01

    一.CSS基础知识介绍 1.css是cascading style sheet层叠式样式表的简写 2.css小用法 加粗:font-weight:bold;             正常用:norma ...

  9. python基础知识 01

    一.计算机基础知识 计算机有硬件+操作系统+软件应用组成 cpu:人的大脑 内存:人的临时记忆 硬盘:人的永久记忆 操作系统 控制计算机硬件工作的流程 应用程序 安装在操作系统上的软件 二.Pytho ...

随机推荐

  1. DevExpress XtraGrid RepositoryItemCheckEdit 复选框多选的解决方法

    1. RepositoryItemCheckEdit默认有三种状态,选中状态.未选中状态和半选中状态(半选中状态通常用在TreeList中如果父节点下的子节点有选中的有未选中的,则父节点状态为半选中状 ...

  2. jQuery分析(2) - $工厂函数分析

    前言 从这节进入jQuery的世界,首先从jQuery的入口函数开始了解jQuery()或$是如何运作的,这里我给出了一个最小的例子来分析. 回忆 在进入分析代码前我们回想下jQuery的使用方法有哪 ...

  3. .NET开源工程推荐(Accord,AForge,Emgu CV)

         本人用C#开发了一些项目,下面的开源工程给了我很大的帮助——详细的源代码介绍加丰富的实例运用,是非常不错的学习资源,分享给大家,同时附上我的相关开发项目.    Accord.NET The ...

  4. vs2010 “发生生成错误,运行上次的成功运行的程序”怎么改回不运行。

    当程序出现错误时,会出现下面对话框: 如果选择"是",并且勾选了"不再显示此对话框",对你以后的操作时非常麻烦的. 许多同学想再次调出次窗口,不知道怎么操作,操 ...

  5. javascript 学习笔记之JQuery中的Deferred对象

    Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...

  6. PHP设计模式之:装饰模式

    <?php// 人类class Person{    private $name;    public function __construct($name)    {        $this ...

  7. Centos6.5最小化安装:配置网络和自启动服务

    参考http://www.111cn.net/sys/CentOS/56456.htm 1.开启网络连接,禁止IPV6启用 1.开启网络连接 vi  /etc/sysconfig/network-sc ...

  8. Android中用Application类实现全局变量

    最近在项目中,遇到了application这个类,开始不知道有什么用,经过学习后才知道它的用途也蛮大的,举个例子,如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在 ...

  9. Xcode-01ARC / Block

    1.nonatomic 2.assign 3.strong 4.weak 5.instancetype 6.@class @property 使部分类在编译时不使用ARC -(可以让这们支持 reta ...

  10. MySQL查询统计,统计唯一值并分组

    做个笔记 SQLyog客户端访问MySQL服务器 统计数据:次数总数, 次数成功率,对象(obj)总数,对象(obj)成功率 要求:按时间排序和分组 sql语句如下: SELECT a.date AS ...