文档

  • 键值对的一个有序集
  • 文档被表示为对象
  • 文档必须有一个 _id
{"greeting" : "Hello, world!"}`

  • 文档的键是字符串
  • 区分类型和大小写
  • 不能含有空字符(\0)
  • .$ 是保留字
  • 不能由重复的键
  • 键/值对是有顺序的

集合

  • 一组文档
  • 动态模式: 一个 集合里的文档可以是多样;

命名

  • 集合名不能是空字符串;
  • 不能包含空字符(\0);
  • 不能以system开头;
  • 不能包含保留字符$

子集合

  • 集合用.分隔不同命名空间的子集合

数据库

  • 多个集合可以组成数据库

命名

  • 不能是空字符串
  • 基本上只能使用ASCII中的字母和数字
  • 区分大小写,简单来将,应该都用小写
  • 最多64字节
  • 如果不创建数据库直接创建集合,会默认在test数据库中

保留数据库

  • admin: 这是一个root数据库,如果将一个用户添加到此数据库,将自动获得所有数据库的权限;一些特定服务器端命令也只能从admin数据库运行
  • local:这个数据库永远不可复制,一台服务器上的所有本地集合都可以存储在这个数据库中
  • configmongodb用于分片设置时,分片信息会存储在此数据库

启动

  • mongod在没有参数的情况下会使用默认数据目录:/data/db
  • 默认监听接口:27017

数据类型

  • null
  • 布尔值
  • 数值:默认64位浮点值;对于整数值,可使用NumberInt(表示4字节带符号整数),NumberLong(表示8字符带符号整数)
{"x": NumberInt("3")}
{"x": NumberLong("3")}
  • 字符串类型

  • 日期: {"x": new Date()}

  • 正则表达式:{"x":/foobar/i}

  • 数组

  • 内嵌文档: {"x":{"foo":"bar"}}

  • _id是一个12字节的ID,默认类型ObjectId :{"x":objectId()}

    • 如果插入文档时没有 "_id" 键,系统会自动创建一个;

    • 由 24 个十六进制数字组成的字符串;

    • ObjectId 的 12 字节按照如下方式生成:

  • 二进制数据:是一个任意字节的字符串,不能直接在sell中使用;是将非UTF-8字符保存到数据库的唯一方式

  • 代码

客户端

db 变量

  • 启动时 shell 会连到 MongoDB 服务器的 test 数据库, 并将数据库连接赋值给全局变量 db;
  • 这个变量是通过 shell 访问 MongoDB 的主要 入口点;
  • 查看 db 当前指向哪个数据库: db;

基本操作

  • 创建: db.posts.insert(post);
  • 查找: db.posts.find();
  • 更新: db.posts.update([限定条件], newpost);
  • 删除: db.posts.remove(限定条件);

连接

  • 启动shell时默认连接到test数据库;
  • 启动shell时指定机器名和端口,就可以连接到一台不同的机器: $ mongo some-host:30000/myDB;
  • 设置启动时不连接任何数据库: $ mongo --nodb; 之后可以再设置连接
 > conn = new Mongo("some-host:30000")
connection to some-host:30000
> db = conn.getDB("myDB")
myDB

js脚本

使用MongoDB shell执行js脚本;

  • 直接在命令行中传递脚本,运行后退出;
$ mongo script1.js script2.js script3.js
  • 可以指定的主机 / 端口上的mongod运行脚本,运行后退出;
$ mongo --quiet server-1:30000/foo script1.js script2.js script3.js
  • 可以在脚本中使用print()函数将内容输出到标准输出;
  • 也可以使用load()函数,从交互式 shell 中运行脚本,运行后不退出:
 > load("script1.js")
I am script1.js
>
  • 使用js脚本初始化/辅助mongodb设定

 // defineConnectTo.js
/**
* 连接到指定的数据库,并且将db指向这个连接 */
var connectTo = function(port, dbname) {
if (!port) {
port = 27017;
}
if (!dbname) {
dbname = "test";
}
db = connect("localhost:"+port+"/"+dbname);
return db; };

> load('defineConnectTo.js')

run方法

  • 查找当前目录 run("pwd");
  • 行命令行程序: run("ls", "-l", "/home/myUser/my-scripts/");
  • 通常来说,这种使用方式的局限性非常大,因为输出格式很奇怪,而且不支持管道。

.mongorc.js文件

  • 这个文件会在启动shell时自动运行;
  • 位置在用户主目录;
  • 启动时指定--norc参数,就可以禁止加载 ;

定制shell提示

  • 设置prompt变量:
//显示操作时间
prompt = function() {
return (new Date())+"> ";
}; //显示当前数据库
prompt = function() {
if (typeof db == 'undefined') {
return '(nodb)> ';
}
// 检查最后的数据库操作
try {
db.runCommand({getLastError:1});
} catch (e) {
print(e);
}
return db+"> ";
};

编辑复合变量

> EDITOR="/usr/bin/vim"
> var wap = db.books.findOne({title: "War and Peace"})
> edit wap

mongodb学习02基础知识的更多相关文章

  1. mongodb 学习笔记--- 基础知识

    1.mongodb的安装 (1) mac使用brew 安装就好 brew install mongodb (2) mkdir /data/db 作为mongodb默认的数据目录 并 sudo chow ...

  2. 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用

    在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...

  3. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  4. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  5. Ant学习-001-ant 基础知识及windows环境配置

    一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...

  6. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  7. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  8. 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))

    关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...

  9. 学习Python3基础知识过程中总结

    print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...

随机推荐

  1. js中 map 遍历数组

    map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组.注意,这个方法不会改变原始数组. 在我们的例子中,回调函数只有一个参数,即数组中元素的值 (val 参数) , ...

  2. ORACLE、MYSQL的JDBC配置

    info.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver info.jdbc.url=jdbc:oracle:thin:@192.168.18 ...

  3. 【QT】C++ GUI Qt4 学习笔记4

    感觉这本书的顺序设计的太不合理了,出现的最多的一句话就是后面会讲.按照使用的顺序讲不行吗?搞得代码都运行不了. 我决定先直接跳到73页,子类化QTableWidgetItem这一节.因为前面功能的实现 ...

  4. linux 用户、用户组不能是全数字

    今天封装命令行,需要创建用户.用户组,遇到下面问题,如图: 当时我和迷茫,为什么明明存在‘1111’这个用户组,但是却提示不存在呢??难道是linux的一个bug??? 接着我又试了几个: 发现规律了 ...

  5. IOS - Objective-C NSArray和NSMutableArray的详解 使用

    原文地址:http://blog.csdn.net/totogo2010/article/details/7729377 Objective-C的数组比C++,Java的数组强大在于,NSArray保 ...

  6. HTML简历表格

    效果图 <!DOCTYPE > <html> <head> <meta charset="utf-8" /> </head&g ...

  7. July 3rd, Week 28th Sunday, 2016

    2016-07-03 First-hand experience is often necessary for personal growth. 亲身体验通常是成长所必须的. Although som ...

  8. Mysql之performance Schema

    Performance schema是用于监控Mysql执行,具有如下特征: 1.用于在运行时探查Mysql Server的执行过程,是由Performance_schema引擎和 Performan ...

  9. SYSIBM.SYSPACKSTMT db2 存储statement的表

    SYSIBM.SYSPACKSTMT table   The SYSIBM.SYSPACKSTMT table contains one or more rows for each statement ...

  10. 苹果官方制作MAC OS的启动U盘的步骤

    工具/原料 一个8G或者更大容量的U盘 MAC OS系统镜像DMG文件 方法/步骤 1.打开应用程序 - 使用工具里的磁盘工具,将U盘格式化为MAC OS扩展日志式,名称输入Mavericks,并创建 ...