MongoDB介绍

MongoDB介绍

制作人:全心全意

MongoDB存储的是json对象(文档型存储)。

MongoDB将磁盘格式化为gridfs,在此文件格式上存储数据,存储的数据为二进制的json格式。

MongoDB引用了chrome独特的js引擎chrome v8,所以MongoDB有能力执行JS。

 

命令介绍

bsondump:导出二进制结构的备份文件

mongo:客户端

mongod:服务端

mongodump:整体数据库备份(二进制)

mongoexport:导出易识别的json文档或csv文档

mongorestore:数据库整体导入

mongos:路由器(集群时使用)

 

启动服务

./bin/mongod --dbpath 数据存储目录 --logpath 日志存储文件 --port --fork

--dbpath:数据存储目录

--logpath:日志存储目录及文件名

--port:运行端口(默认27017)

--fork:后台进程运行

 

常用命令

查看所有数据库

show databases;

  或

show dbs;

  

选择库

use 库名

 

查看当前数据库的collection

show tables;

  或

show collections;

  

创建数据库(隐式创建)

在MongoDB中隐式创建数据库,只需要直接切换到数据库中,使用该数据库,MongoDB会自动创建该数据库。

 

创建collection(支持隐式创建)

db.createCollection('名称');

  

删除collection(进入数据库中)

db.collection名.drop();

 

删除数据库(进入要删除的数据库)

db.dropDatabase();

 

数据操作

MongoDB中如果不指定主键_id,MongoDB会自动创建主键。

语法格式:

db.collection名.insert(json或数组)

  

增加单条数据

db.stu.insert(
    {
        "_id":"1",
        "name":"lisi",
        "age":25,
    }
);

增加多条数据

db.stu.insert([
    {
        "_id":2,
        "name":"wnagwu",
        "age":22,
        "sex":"男",
    },
    {
        "_id":3,
        "name":"xiaohong",
        "sex":"女"
    }
]);

  

语法格式:

db.collection名.remove(查询表达式,选项)

查询表达式:

查询表达式依然是个json对象

查询表达式匹配的行将被删除

如果查询表达式为空对象{},collection中的所有文档将被删除

选项:

是否只删除一行{justOne:true/false},默认为false

 

删除匹配的所有数据

db.stu.remove(
    {
        "age":22,
    }
);

仅删除匹配的一条数据

db.stu.remove(
    {
        "age":22,
    },true
);

 

 

语法格式:

db.collection名.update(查询表达式,新值,选项);

 

新值:

赋值表达式:

$set:修改某个列的值

$unset:删除某个列

$remove:重命名某个列

$inc:增长某个列

$setOnInsert:当upsert为true时,并且发生了insert操作时,可以补充的字段

选项:

upsert:没有匹配的行,则直接插入该行

multi:修改所有匹配结果,默认仅修改一条

 

语法格式:

仅显示一条匹配结果

db.collection名.findOne(查询表达式,查询的列);

显示全部匹配结果

db.collection名.find(查询表达式,查询的列);

  

查询表达式

$ne:不等于

{列名:{$ne:值}}

 

$in:取值的列表

{列名:{$in:[值1,值2...]}}

 

$nin:非取值的列表

{列名:{$nin:[值1,值2...]}}

 

$exists:查询含有指定字段的文档

{列名:{$exists:1}}

  

and的使用

{条件1,条件2...}

  

or的使用

{$or:[条件1,条件2...]}

  

$where:遍历每一条数据采用js语法查询

{$where:"this.列名 == 值 && ..."}

不推荐使用,效率极低

 

分组操作

语法格式:

db.collection名.aggregate([
    {$match:{查询条件}},
    {$group:{_id:"进行分组的字段名",操作后返回结果的字段别名:{操作函数:"$操作字段名"}}}
])

 

 

 

 

posted @ 2019-01-02 15:38  全心全意_运维  阅读(188)  评论(0编辑  收藏  举报