MongoDB介绍

Wesley13
• 阅读 732

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:"进行分组的字段名",操作后返回结果的字段别名:{操作函数:"$操作字段名"}}}
])
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Immortal Immortal
3年前
Python操作MongoDB
前言MongoDB是由C语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,非常适合JSON数据存储,故受到广大爬虫程序员的青睐。现在,我们就来看看Python3下MongoDB的存储操作。准备工作请确保已经安装好了MongoDB并启动了服务。可以参考https://www.helloworld.ne
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
NoSQL
MongoDB是文档类数据库(json),是海量级数据存储的数据库被称为最像关系型数据库的NoSQL第一章:逻辑结构MongoDB逻辑结构MySQL逻辑结构库database库集合表文档数据行第二章:安装部署1.系统准备(1)redhat或centos6.2以上系统
Stella981 Stella981
3年前
MongoDB 文档(Document)操作
MongoDB文档操作(增、删、改)在MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分MongoDB中的文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式BSON是一种类似JSON的二进制形式的存储格式,是
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这