文档章节

mongo

NikoTesla
 NikoTesla
发布于 2015/11/16 11:12
字数 1058
阅读 85
收藏 0

概念

文档

文档是MongoDB的核心

注:

  1. 文档中键值对是无序的,不同的文档只是因为ID区分
  2. 文档中的键值不但区分大小写,还区分类型
  3. 文档的键是字符串。(除少数情况外,可以是任意的UTF-8字符)
    • _开始的键是保留的
    • 键不能含有空字符
    • .和$保留 最好不用
  4. 文档的键不能重复

集合

  1. 文档类似于关系行数据库中的行,集合类似于关系型数据库中的表
  2. 集合是无模式的:集合里面可以放置任何文档 **注:**有必要使用多个集合吗?(多种原因,以后应用自己体会)
  3. 集合命名:
    • 集合名不能使""
    • 集合名不能带有\0字符(空字符) 这个字符代表集合名的结尾
    • 集合名不能以system.开始
    • 不要用保留字符$
  4. 子集合

数据库

  1. 数据库:
    • 一个MongoDB可以承载多个数据库,每个数据库都有独立的权限控制
    • 一个数据库由多个集合组成
  2. 命名:(最终会变成文件系统里面的文件)
    • 不能有空字符串("")
    • 不得含有''(空格)、.、$、/、\、\0
    • 应全部小写
    • 最多64字节
  3. 保留数据库名(系统自己的数据库)
    • admin 从身份验证的角度来讲,这是 root 数据库,如果有一个用户添加到这个数据库,则这个用户将拥有所有数据库的权限
    • local 这个数据库永远都不可以复制,且一台服务器上所有的本地集合都可以存储在这个数据训中;
    • config MongoDB 用户分片设置时,分片信息会存储在 config 数据库中。
  4. 命名空间
    • 也称集合的完全限定名=数据库名+集合名
    • 长度不能超过121字节,实际操作应该小于100字节

安装

按照官网的安装指南在CentOS 64位机器上安装MongoDB 3.0,大致流程为:

  • 新增YUM源;
  • 安装MongoDB最新版;
  • 关闭selinux;
  • 增加防火墙规则;
  • 启动MongoDB服务;
  • 启动MongoDB客户端验证。

启动和关闭

  1. 启动服务:
mongod -f /etc/mongod.conf

使用配置文件启动,启动参数详情看配置文件

MongoDB Shell

MongoDB 自带有 JavaScript Shell ,可以Shell 中使用命令行与 MongoDB 实例交互,Shell非常有用,通过它可以执行管理操作,检查运行实例,亦或是做其它尝试。

  1. 运行shell
$ mongo
  1. 退出shell
> exit

database操作

  • 查看所有数据库,并指定使用的数据库
> show dbs
> use blogtest
  • 查看当前数据库中的所有集合
> show collections 
  • 查看当前数据库
> db

collection操作

  • 新建collection
> db.createCollection("blog")
  • 删除collection
> db.blog.drop()
  • 重命名collection
> db.blog.renameCollection("Blog")
  • 删除collection中所有文档
> db.blog.remove()

document操作

基本操作:创建、读取、更新、删除,即 CRUD 操作。
  • 创建数据
> post = {"title": "这是一篇文章", "content": "这是文章的内容。","date" : new Date()}
{
    "title" : "这是一篇文章",
    "content" : "这是文章的内容。",
    "date" : ISODate("2015-04-21T02:22:52.899Z")
}
> db.blog.insert(post)
WriteResult({ "nInserted" : 1 })
  • 读取数据
> db.blog.find()
{ "_id" : ObjectId("5535b574b705494e688e218a"), "title" : "这是一篇文章", "content" : "这是文章的内容。", "date" : ISODate("2015-04-21T02:22:52.899Z") }

> db.blog.findOne()
{
    "_id" : ObjectId("5535b574b705494e688e218a"),
    "title" : "这是一篇文章",
    "content" : "这是文章的内容。",
    "date" : ISODate("2015-04-21T02:22:52.899Z")
}
  • 更新数据
> post.comments = []
[ ]
> db.blog.update({"title":"这是一篇文章"},post)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.blog.findOne()
{
    "_id" : ObjectId("5535b574b705494e688e218a"),
    "title" : "这是一篇文章",
    "content" : "这是文章的内容。",
    "date" : ISODate("2015-04-21T02:22:52.899Z"),
    "comments" : [ ]
}

  • 删除数据
> db.blog.remove({"title":"这是一篇文章"})
WriteResult({ "nRemoved" : 1 })
> db.blog.find()

索引操作

  • 新增索引:在blog集合上,建立对ID字段的索引,1代表升序。
> db.blog.ensureIndex({ID:1})
  • 查看所有索引
> db.blog.getIndexes()
  • 删除索引
db.collection.dropIndex()
有一个参数,可以是建立索引时指定的字段,也可以是getIndex看到的索引名称。

数据类型

基本的数据类型

MongoDB 的文档与 JavaScript 中的对象相近,因而可以认为类似于 JavaScript 中的 JSON,JSON 是一种简单的数据表示方式,仅有 6种数据类型,分别为 null、bool、number、string、array 和 object。

附:object id 以以下方式生成:

|0|1|2|3|4|5|6|7|8|9|10|11|
|  时间戳  | 机器|PID|   计数器    |

© 著作权归作者所有

上一篇: memcache
下一篇: git
NikoTesla
粉丝 4
博文 57
码字总数 12246
作品 0
东城
程序员
私信 提问
mongodb 备份压缩及清除指定日期前的数据

#!/usr/bin/bash #define:Mongodb data backup regularly, delete data before the specified time #date:2016-12-20 curr_dir=pwd backdir="/data/bak/mongodbbak" mongo_comm="/usr/local/......

空灵飞渡
2016/12/28
202
0
mongo数据项目应用

mongo数据项目应用 一、数据库的客户端程序以及配置和CRUD操作 1、客户端工具 1)目前使用的是mongochef 2)无用户名和密码登录 3)使用用户名和密码登录时,需要配置Authentication,信任模式为...

0了凡0
2016/07/21
131
0
ansible部署mongoDB

一、ansible控制端安装和客户端主机组准备(/etc/ansible/hosts) #rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm # yum install ansibel -y #cat /et......

youkoudiancom
2017/04/21
0
0
mongodb无法取到数据

@sincoder 你好,想跟你请教个问题: #include "mongo.h" #include #include #include int main ( int argc, char *argv[] ) { mongo conn[1]; mongo_cursor* cursor; int status = mongo_cl......

杜扬
2013/03/14
460
1
php7 环境 phalcon 如何使用mongodb数据库

phalcon 如何使用mongodb数据 官方文檔上面有这样的描述: Please note that if you are using the Mongo driver provided by PHP 7, the ODM will not work for you. There is an incubator......

anziguoer
02/27
36
0

没有更多内容

加载失败,请刷新页面

加载更多

家庭作业——苗钰婷

2 编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that! #include<stdio.h>int main(){......

OSC_Okruuv
24分钟前
4
0
经典系统设计面试题解析:如何设计TinyURL(一)

原文链接: https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
25分钟前
3
0
2.面向对象设计原则(7条)

开闭原则 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。 实现方法 可以通过“抽象约束、封装变化”来实...

Eappo_Geng
27分钟前
6
0
8086汇编基础 debug P命令 一步完成loop循环

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
31分钟前
3
0
使用nodeJS实现前端项目自动化之项目构建和文件合并

本文转载于:专业的前端网站➜使用nodeJS实现前端项目自动化之项目构建和文件合并 前面的话   一般地,我们使用构建工具来完成项目的自动化操作。本文主要介绍如何使用nodeJS来实现简单的项...

前端老手
45分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部