1.mongodb的安装

(1) mac使用brew 安装就好 brew install mongodb

(2) mkdir /data/db 作为mongodb默认的数据目录 并 sudo chown -R $(whoami) /data/db 赋予其权限

2.mongodb 命令行(分为2步)

(1)无密码的初始状态:

a.直接执行 mongod  开启mongodb的连接

b.打开另一个命令行窗口 执行 mongo 进入命令行

(2)存在用户密码的正常管理状态:

3.一些名词

(1)文档 作为mongodb中数据组织的最基层,相当于关系型数据库中的 行。  就是js中的一个对象的json.stringify ,不过不同于js对象的是,文档中key-value 是有顺序的,{"x":1,"y":2} 和 {"y":2,"x":1}是不相同的

(2) 集合 由若干文档组成的数据集,相当于关系型数据中的表。建议在创建集合的时候将同种类型结构的文档放入同一集合中,这样能减少相应的磁盘寻道操作。集合在命名时不要用system.开头,且其中不能出现 [空字符,$]

(3)数据库 由若干集合组成的数据集。 命名时正常命名就好,除了[admin,local,config]外,最长为64字节,建议全部小写

(4) 命名空间  用于表示一个集合的完全限定名,形式为:数据库名称.集合名称

(5) 基本数据类型: null

布尔

数值:默认使用64位浮点,想表示整数时用NumberInt("2"),NumberLong("2")

字符串

日期 : 根据shell本地时间显示日期对象,存储时为字符串,但实际是日期对象

                            正则

数组

内嵌文档

                            对象id  : ObjectId()  用于创建文档的唯一标识,如果不创建系统会自动创建_id字段

                            二进制数据

                            js代码

4. 基本数据库操作

(1)db   查看当前db名称

(2) show dbs 查看当前所有db

(3)use [dbname]   进入此db 当db不存在时临时会创建一个,但是show dbs并不会展示该数据库,只有在插入实际数据后才会存在。

(4) show collections 显示当前db下的所有集合

(5) help  查看其余命令(还是很有用的)可以db.help() 查看db可用的方法,db.[集合名].help() 发现集合中的方法  剩余方法不再介绍,查看help就会有收获

5. CRUD等文档操作

(1) 插入文档: insert  只需要在 db(即当前数据库).集合.insert({...})即可,批量操作时传入文档的数组。单个文档大小限制为16MB,可以通过Object.bsonsize方法查看。

(2) 查询文档:db.集合名称.find()  查询出所有文档。 当给find传参为文档的某一个或多个key-value 时查询出符合条件的文档 如  find({"age":15,"name":"jack"})。

db.集合名称.findOne() 查询出第一条文档。传参同上

(3) 更新文档: db.集合名称.update(kv条件,文档)  这里第二个参数会完全将符合条件的文档覆盖,并不会片段更新,    传入第三个参数为true时,为upsert操作:有就更新,没有新增; 传入第四参数为true时,全部更新满足条件的文档

(4) 删除文档:db.集合名称.remove({...})  传入空对象时全删,传了条件只删除满足条件的。删除是永久的,不能恢复

(5) 综合操作: save: 如果传入的文档参数带有_id 则update,如果没有则insert

6.shell 执行js脚本

mongo /xxx/xx.js /yyy/yyy,js 即可,脚本内容如下

// 脚本1
var data = [
{"name":"peter","age":13},
{"name":"mary","age":14}
];
db = db.getSisterDB("test");
db = db.getSisterDB("foobar");
db.people.insert(data); // 脚本2 // db = db.getSisterDB("test");
// db = db.getSisterDB("foobar"); 此处再写就是多余,两个脚本是上下承接关系,不用再重新指定db
db.people.update({"age":14},{"name":"kaka","age":14})

也可以在shell中使用load函数运行外部脚本:load(/xxx/xxx.js)  这里的路径必须为绝对路径,无法解析~ 符号

用run("ls","-a","/xxx/xxx") 执行命令行命令,不过这么用很别扭

7.其他

(1)  .mongorc.js 会存在于用户根目录下,mac中就是 ~/下,里面的脚本会在启动shell时执行

mongodb 学习笔记--- 基础知识的更多相关文章

  1. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  2. three.js学习笔记--基础知识

    基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...

  3. SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

    Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   ...

  4. Java Script 学习笔记 -- 基础知识

    Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...

  5. MongoDB学习笔记,基础+增删改查+索引+聚合...

    一 基础了解 对应关系 -> https://docs.mongodb.com/manual/reference/sql-comparison/ database -> database ...

  6. mongodb学习02基础知识

    文档 键值对的一个有序集 文档被表示为对象 文档必须有一个 _id 键 {"greeting" : "Hello, world!"}` 键 文档的键是字符串 区 ...

  7. java虚拟机JVM学习笔记-基础知识

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--java虚拟机 媒介:JVM是每一位从事Java开发工程师必须翻越的一座大山! JVM(Java Virtual Machine)JRE ...

  8. hadoop学习笔记——基础知识及安装

    1.核心 HDFS  分布式文件系统    主从结构,一个namenoe和多个datanode, 分别对应独立的物理机器 1) NameNode是主服务器,管理文件系统的命名空间和客户端对文件的访问操 ...

  9. MongoDB学习笔记-基础概念

    mongodb中基本的概念 文档.集合.数据库 与关系数据库的概念对比更容易理解

随机推荐

  1. 【bzoj5001】搞事情 暴力

    题目描述 给定一个NM的01矩阵,每次可以选定一个位置,将它和它相邻格子的数取反.问:怎样操作使得所有格子都变为0.当有多组解时,优先取操作次数最小的:当操作次数相同时,优先取字典序最小的. 输入 第 ...

  2. 用select模拟一个socket server成型版2

    1.字典队列测试 import queue msg_dic={} msg_dic[1]=queue.Queue() msg_dic[1].put('hello') msg_dic[1].put('bo ...

  3. [LOJ2540] [PKUWC2018] 随机算法

    题目链接 LOJ:https://loj.ac/problem/2540 Solution 写的时候脑子不太清醒码了好长然后时间\(LOJ\)垫底... 反正随便状压\(dp\)一下就好了,设\(f[ ...

  4. [洛谷P5068][Ynoi2015]我回来了

    题目大意:给你一张$n(n\leqslant10^3)$个点$m(m\leqslant10^5)$个点的无向无权图,多组询问,每次询问给你一些二元组$(x_i,y_i)$,求有多少个$u$于至少一个二 ...

  5. [USACO16OPEN]钻石收藏家Diamond Collector

    由于相差不超过k才可以放在一起,要判断不超过k这个条件,显然我们需要排序 首先我们需要一个f数组,f[i]意义看代码开头注释, 假设我们可以选择的某一个区间是a[l]~a[r](已排序且最优(最长的意 ...

  6. BZOJ1041 [HAOI2008]圆上的整点 【数学】

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4631  Solved: 2087 [Submit][S ...

  7. React ref的用法

    React的ref有3种用法: 1. 字符串(已废弃)2. 回调函数3. React.createRef() (React16.3提供) 1. 字符串 最早的ref用法. 1.dom节点上使用,通过t ...

  8. 几个与特殊字符处理有关的PHP函数(过滤html js 标签)

    函数名 释义 介绍 htmlspecialchars 将与.单双引号.大于和小于号化成HTML格式 &转成&"转成"' 转成'<转成<>转成> ...

  9. 使用Phoenix将SQL代码移植至HBase

    1.前言 HBase是云计算环境下最重要的NOSQL数据库,提供了基于Hadoop的数据存储.索引.查询,其最大的优点就是可以通过硬件的扩展从而几乎无限的扩展其存储和检索能力.但是HBase与传统的基 ...

  10. 目标世界上最小的Linux系统—ttylinux体验

    ttylinux的官方网址:http://ttylinux.net/ 简单翻译一下: 你当前访问的是ttylinux的主页,一个针对多种CPU架构的极小的GNU/Linux系统.最小的ttylinux ...