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 ...
随机推荐
- ajax 删除一条数据
代码: 对这一段话的理解:先找到需要删除的节点,以及节点里的文本:用Ajax 发送请求,请求方式为POST ,请求内容为需要删除记录的文件,dataType定义数据类型Json,通常都是Json,da ...
- plsql客户端显示菜单等
不小心把plsql的左边的都关了,如图 菜单条---工具---浏览器. 即可.
- spring mvc配置完后实现下载功能
实现是前台: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...
- mysql设置密码
mysql如何设置密码 有很多方法: 1.用root 进入mysql后 mysql>set password =password('你的密码'); mysql>flush privileg ...
- IOS- 02 零碎知识总结
1.UIView,UIViewController,UIWindow和CALayer UIView是什么,做什么:UIView是用来显示内容的,可以处理用户事件 CALayer是什么,做什么:CALa ...
- 常用的数据统计Sql 总结(转)
转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与 ...
- JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)
1.IP简述使用//获取本地主机ip地址对象.InetAddress ip = InetAddress.getLocalHost();//获取其他主机的ip地址对象.ip = InetAddress. ...
- .net学习之泛型、程序集和反射
一.泛型1.CLR编译时,编译器只为MyList<T>类型产生“泛型版”的IL代码——并不进行泛型的实例化,T在中间只充当占位符.例如:MyList 类型元数据中显示的<T> ...
- Web框架之Tornado
概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...
- python中最简单的多进程程序
学着.. #!/usr/bin/env python # -*- coding: utf-8 -*- # Spawn a Process: Chapter 3: Process Based Paral ...