文档

  • 键值对的一个有序集
  • 文档被表示为对象
  • 文档必须有一个 _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代码封装成Jquery插件

    很多相同的Jquery代码会在很多页面使用,每次都复制粘贴太麻烦了,不如封装成一个Jquery插件就方便了,至于影响网页的速度不,我就没有测试了哈. 代码如下 这是一个自定闪烁打印文字的Jquery特 ...

  2. struts2响应AJAX

    1发送ajax请求使用stream进行响应 Result的type属性的stream取值. 1.1定义Action public class UserAction { private String u ...

  3. osgearth使用prjected投影

    In projected mode, you have to specify a map profile (i.e. a map projection). You also need to tell ...

  4. August 10th, 2016, Week 33rd, Wednesday

    The degree of loving is measured by the degree of giving. 爱的深浅是用给与的多少来衡量的. Some say that if you love ...

  5. 解决window删除文件时提示: 源文件名长度大于系统支持的长度

    import java.io.File; /** */ public class DeleteFiles { public static void deleteFiles( File file ){ ...

  6. [USACO07MAR]黄金阵容均衡Gold Balanced L…(洛谷 1360)

    题目描述 Farmer John's N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been able to na ...

  7. 20145206邹京儒《Java程序设计》第2周学习总结

    20145206 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型 Java可区分为基本类型和类类型两大类型系统,其中,类类型也称为参考类型. 在Java中的基本类型主要可区 ...

  8. 常用的数据统计Sql 总结(转)

    转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与 ...

  9. Pyqt 打包资源文件

    用打包工具将做好的Pyqt程序打包成exe后发现引用的资源图片都显示不了? 是否遇到了和我一样的问题呢.google之后找到了方法,一种方法是在程序中引用外部资源,另外一种方法是将资源文件转换为py文 ...

  10. sort函数用法

    原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己 ...