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 ...
随机推荐
- android ExpandableListView详解
ExpandableListView是android中可以实现下拉list的一个控件,是一个垂直滚动的心事两个级别列表项手风琴试图,列表项是来自ExpandableListViewaAdapter,组 ...
- 【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)
32.(数组.规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序:要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小.例如: var a=[ ...
- HDU 4387 Stone Game (博弈)
题目:传送门. 题意:长度为N的格子,Alice和Bob各占了最左边以及最右边K个格子,每回合每人可以选择一个棋子往对面最近的一个空格移动.最先不能移动的人获得胜利. 题解: k=1时 很容易看出,n ...
- bootstrap清除拟态框内添加新HTML再打开时会有缓存现象
$(function(){ $("#editor").on("hidden.bs.modal",function(){ //清除缓存方法 $(this).fin ...
- TortoiseSVN中Branching和Merging实践
转自:http://blog.csdn.net/eggcalm/article/details/6606520 使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及 ...
- wc(Word Count)
.查看文件的字节数.字数.行数 wc test.txt --> 行数 单词数 字节数 文件名 .用来统计当前目录下的文件数(数量中包含当前目录) ls -l | wc -l -c 统计字节数. ...
- c语言强制类型转换
一.强制类型转换 printf("3/2+100.5=%f",3/2+100.5);//100.5错误表达 printf (" (float)3/(float)2 ...
- Lua程序设计入门
在Lua中,一切都是变量,除了关键字.TTMD强大了. 1.注释 -- 表示注释一行 --[[ ]]表示注释一段代码,相当于C语言的/*....*/ 注意:[[ ... ]]表示一段字符串 2.lua ...
- 20145206邹京儒《Java程序设计》第一周学习总结
20145206 <Java程序设计>第1周学习总结 教材学习内容总结 1.三大平台:Java SE.Java EE与Java ME.Java SE是各应用平台的基础,分为四个主要的部分: ...
- Mac OS
defaults write com.apple.finder AppleShowAllFiles -bool true 此命令显示隐藏文件defaults write com.apple.finde ...