NoSQL 数据库类型分为 列存储、文档存储、键值存储、图存储、对象存储、xml 数据库 6种类型。(来自w3cschool教程)
MongoDB 是由C++语言编写的开源数据库系统。其将数据存储为一个文档,是一个基于分布式文件存储的数据库。
MongoDB 区分大小写
安装
MongoDB 安装:3.2版本之后不支持32位windows操作系统,小版本为偶数的版本为稳定版。如3.4, 4.0。MongoDB 的安装步骤很简单,如果不修改安装目录,一直下一步即可。安装步骤略。。。
我这里安装的是当前最新稳定版4.0.9,安装完成后自带了 MongoDB Compass Community,打开 MongoDB Compass Community,可以直接在这个工具上进行文档(数据)的增删改查,感觉类似于 oracle 的 plsql 。
以上就是我知道的一些基本操作,我没有找到编写脚本文件的窗口,所以我后面将使用如下 NoSQL Manager for MongoDB 工具,通过编写脚本可以更清楚地学习 MongoDB 的语法。
MongoDB 中可以存放多个数据库,一个数据库可以存放多个集合,一个集合可以存放多个文档,文档是 MongoDB 中的最小操作单元
集合类似 sql 数据库(oracle)中的表,文档类似一条记录,或者说一行
数据库和集合不用我们特意创建,插入数据时将自动创建
基本指令
/**
基本指令
*/
show dbs; //显示有哪些数据库
use local; //使用指定的数据库
db; //显示当前使用的数据库
show collections; //显示当前数据库的所有集合
CURD
—添加—
db.<集合名>.insert() 参数可以是一个文档对象,也可以是一个文档对象数组
文档对象其实就是一个 json 对象
添加的每一个文档对象都会有一个 _id 属性,值也会默认生成。如果自己指定,则用自己指定的值。
例:执行 db.students.insert() 时,students 集合如果不存在会自动创建。
在 MongoDB3.2版本之后加入的 insertOne(),insertMany() 方法,功能同方法名。insertOne() 只能传入单个文档对象,insertMany()只能传入对象数组。
//插入一条数据时,传入一个文档对象
db.students.insert({
sname:"张三",sage:21});
db.students.insertOne({
_id:"1234567",sname:"tom",sgender:"male"});
//插入多条数据时,传入一个对象数组
db.students.insert([
{
sname:"李四",sage:25},
{
sname:"王五",sage:30}
]);
db.students.insertMany([
{
sname:"lily",sage:16,sgender:"female"},
{
sname:"rose",sage:18,sgender:"female"}
]);
db.students.find();
执行结果如下:
属性值可以是文档对象,称内嵌文档。示例如下:
—查询—
db.<集合名>.find() 不传参或传空对象都表示查找该集合中全部文档对象,返回的是一个对象数组,可以下标取值。如:db.<>.find()[0]
进行条件查询时,需要传入文档对象。
pretty() 可以格式化查询结果,是结果展示更美观,只支持展示结果为 json 格式的
db.<>.findOne() 只查询符合条件的第一个对象,可以直接取属性值。如:db.<>.find().sname
查询内嵌文档的属性时,支持用点号(.)进行查询
db.<>.find().count() 同 db.<>.length() 查询所有结果的个数
只想查询部分指定属性,需传入第二个参数,要显示的给1,不显示的给0,不指定的默认不显示,_id 默认都显示,可用0不显示
//查询全部
db.students.find().pretty