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 ...
随机推荐
- js中 map 遍历数组
map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组.注意,这个方法不会改变原始数组. 在我们的例子中,回调函数只有一个参数,即数组中元素的值 (val 参数) , ...
- ORACLE、MYSQL的JDBC配置
info.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver info.jdbc.url=jdbc:oracle:thin:@192.168.18 ...
- 【QT】C++ GUI Qt4 学习笔记4
感觉这本书的顺序设计的太不合理了,出现的最多的一句话就是后面会讲.按照使用的顺序讲不行吗?搞得代码都运行不了. 我决定先直接跳到73页,子类化QTableWidgetItem这一节.因为前面功能的实现 ...
- linux 用户、用户组不能是全数字
今天封装命令行,需要创建用户.用户组,遇到下面问题,如图: 当时我和迷茫,为什么明明存在‘1111’这个用户组,但是却提示不存在呢??难道是linux的一个bug??? 接着我又试了几个: 发现规律了 ...
- IOS - Objective-C NSArray和NSMutableArray的详解 使用
原文地址:http://blog.csdn.net/totogo2010/article/details/7729377 Objective-C的数组比C++,Java的数组强大在于,NSArray保 ...
- HTML简历表格
效果图 <!DOCTYPE > <html> <head> <meta charset="utf-8" /> </head&g ...
- July 3rd, Week 28th Sunday, 2016
2016-07-03 First-hand experience is often necessary for personal growth. 亲身体验通常是成长所必须的. Although som ...
- Mysql之performance Schema
Performance schema是用于监控Mysql执行,具有如下特征: 1.用于在运行时探查Mysql Server的执行过程,是由Performance_schema引擎和 Performan ...
- SYSIBM.SYSPACKSTMT db2 存储statement的表
SYSIBM.SYSPACKSTMT table The SYSIBM.SYSPACKSTMT table contains one or more rows for each statement ...
- 苹果官方制作MAC OS的启动U盘的步骤
工具/原料 一个8G或者更大容量的U盘 MAC OS系统镜像DMG文件 方法/步骤 1.打开应用程序 - 使用工具里的磁盘工具,将U盘格式化为MAC OS扩展日志式,名称输入Mavericks,并创建 ...