文档

  • 键值对的一个有序集
  • 文档被表示为对象
  • 文档必须有一个 _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. jsp页面路径问题

    jsp路径默认不是项目跟路径 一. <%@ page language="java" import="java.util.*" pageEncoding= ...

  2. 【elasticsearch】python下的使用

    有用链接: 最有用的:http://es.xiaoleilu.com/054_Query_DSL/70_Important_clauses.html 不错的博客:http://www.cnblogs. ...

  3. ios 中直接修改frame里边某个属性的简便方法

    参考:http://www.cnblogs.com/wengzilin/p/4359865.html 在iOS中view的frame属性使用地太频繁了,尤其是调UI的时候.我们知道,正常情况下我们无法 ...

  4. [Ubuntu] ubuntu10.04系统维护之Wine的安装

    在介绍安装wine之前,我想是有必要先介绍一下Wine的.当然,如果是Liunx的高手,我想是没必要看的,但是对于笔者这样的菜鸟级人物还是需要看一下的. Wine是一款Liunx下的模拟器软件,但是W ...

  5. 群内大神与你交流WEB经验 业内专家指点就职技巧

    就知道你是一个有理想要抱负的人,不会满足于做一个初级的前端开发工程师.在接下来的这个阶段,我们将走上前端开发的进阶之路,将自己的能力再往上拔高一个等级.同样,薪资也会往上升一个等级!但是,如果你是一个 ...

  6. flume学习

    下载 自定义sink(mysql) 1.ide打开下载后的源码 2.代码如下: /** * Licensed to the Apache Software Foundation (ASF) under ...

  7. hdu2030 汉字统计

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2030 解题思路:主要考察汉字的编码方式, 汉字机内码在计算机的表达方式的描述是,使用二个字节,汉字的每 ...

  8. 最近360和adsafe软件有冲突

    360把adsafe自启动服务给关闭,所以每次启动都不能成功.

  9. jquery学习笔记-----事件和动画

    一.ready机制 $(document).ready( function(){} ) $().ready( function(){} ) $( function(){} )  jquery的read ...

  10. 【转载】Pyqt 添加右键菜单方法

    转载地址: http://www.cnblogs.com/yogalau/p/3954042.html?utm_source=tuicool QListWidget 是继承 QWidget 的, 所以 ...