mongodb学习02基础知识
文档
- 键值对的一个有序集
- 文档被表示为对象
- 文档必须有一个
_id键
{"greeting" : "Hello, world!"}`
键
- 文档的键是字符串
- 区分类型和大小写
- 不能含有空字符(\0)
.和$是保留字- 不能由重复的键
- 键/值对是有顺序的
集合
- 一组文档
- 动态模式: 一个 集合里的文档可以是多样;
命名
- 集合名不能是空字符串;
- 不能包含空字符(\0);
- 不能以
system开头; - 不能包含保留字符
$
子集合
- 集合用
.分隔不同命名空间的子集合
数据库
- 多个集合可以组成数据库
命名
- 不能是空字符串
- 基本上只能使用ASCII中的字母和数字
- 区分大小写,简单来将,应该都用小写
- 最多64字节
- 如果不创建数据库直接创建集合,会默认在
test数据库中
保留数据库
admin: 这是一个root数据库,如果将一个用户添加到此数据库,将自动获得所有数据库的权限;一些特定服务器端命令也只能从admin数据库运行local:这个数据库永远不可复制,一台服务器上的所有本地集合都可以存储在这个数据库中config:mongodb用于分片设置时,分片信息会存储在此数据库
启动
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基础知识的更多相关文章
- mongodb 学习笔记--- 基础知识
1.mongodb的安装 (1) mac使用brew 安装就好 brew install mongodb (2) mkdir /data/db 作为mongodb默认的数据目录 并 sudo chow ...
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...
- JavaScript学习02 基础语法
JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- 学习javascript基础知识系列第三节 - ()()用法
总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...
- 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...
- 学习Python3基础知识过程中总结
print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...
随机推荐
- 跨浏览器的事件对象-------EventUtil 中的方法及用法
什么是EventUti----封装好的事件对象 在JavaScript中,DOM0级.DOM2级与旧版本IE(8-)为对象添加事件的方法不同 为了以跨浏览器的方式处理事件,需要编写一段“通用代码”,即 ...
- TFS强制解除签入签出锁定
首先你要知道你服务器的用户名和登录密码 看被别人签出了的文件
- C语言文件操作相关函数
在实际应用中,我们往往需要对文件进行操作,下面我将介绍C语言的一些关于操作文件的函数. 一.计算机文件 计算机文件是以计算机硬盘为载体存储在计算机上的信息集合,是存储在某种长期储存设备上的一段数据流. ...
- NYOJ题目1047欧几里得
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAIcCAIAAACLpKQmAAAgAElEQVR4nO3dv1LjOsMH4O8m6LkQ6l ...
- Linux系统下设置Tomcat自启动
需要将tomcat加入自启动队列中,则需要进行如下的操作: 以root用户登录系统: cd /etc/rc.d/init.d/ vi tomcat 文件内容参考如下: #!/bin/sh # # to ...
- 用spring+hibernate+struts 项目记录以及常用的用法进等
一.hibernate1. -----BaseDao------ // 容器注入 private SessionFactory sessionFactory; public void setSessi ...
- javascript - 事件详解
一.事件流 1.事件流 描述的是在页面中接受事件的顺序 2.事件冒泡 由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点 (最具体 –> 最不具体) 3.事件捕获 最不具体的节点先接收事 ...
- gbdt可视化
gbdt的最大优点,和决策树一样,高度可解释,最喜欢的分类模型:) #!/usr/bin/env python #coding=gbk # ============================== ...
- 【转载】Python编写简易木马程序
转载来自: http://drops.wooyun.org/papers/4751?utm_source=tuicool 使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马. 首先准备好 ...
- 使用git进行团队合作开发
1.git 和 svn 的差异 git和svn 最大的差异在于git是分布式的管理方式而svn是集中式的管理方式.如果不习惯用代码管理工具,可能比较难理解分布式管理和集中式管理的概念.下面介绍两种工具 ...