当前位置: 首页 > news >正文

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:"进行分组的字段名",操作后返回结果的字段别名:{操作函数:"$操作字段名"}}}
])

 

 

 

 

转载于:https://www.cnblogs.com/zhangquan-yw/p/10208900.html

相关文章:

  • call apply 和 bind
  • PHP如何在CLI命令模式下连接Postgresql
  • tp5.1 路由获取参数问题总结
  • PIE SDK自定义滤波
  • 关于一对一视频聊天系统的那些干货必备知识
  • python中英文书籍汇总,总有一本是你想要的
  • NeoVim初识
  • redis 系列20 服务器上
  • 非spring框架下使用querydsl
  • Java注解的基本概念和原理及其简单实用
  • Android Studio自定义组合控件
  • 在.Net Micro Framework中使用DPWS
  • PIC16F877A 内部EEPROM读写实验利用内部函数
  • 如何让DevExpress的DateEdit控件正确显示日期的周名
  • 手把手教你配置Windows2003集群
  • 2019.2.20 c++ 知识梳理
  • android 一些 utils
  • canvas 高仿 Apple Watch 表盘
  • Computed property XXX was assigned to but it has no setter
  • js数组之filter
  • js中forEach回调同异步问题
  • js作用域和this的理解
  • node入门
  • Quartz初级教程
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spring Cloud中负载均衡器概览
  • vue学习系列(二)vue-cli
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • vue总结
  • Wamp集成环境 添加PHP的新版本
  • XForms - 更强大的Form
  • 动态规划入门(以爬楼梯为例)
  • 观察者模式实现非直接耦合
  • 老板让我十分钟上手nx-admin
  • 前端js -- this指向总结。
  • 入口文件开始,分析Vue源码实现
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 算法---两个栈实现一个队列
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 一个JAVA程序员成长之路分享
  • 在Mac OS X上安装 Ruby运行环境
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​linux启动进程的方式
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (二)PySpark3:SparkSQL编程
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (南京观海微电子)——COF介绍
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十)c52学习之旅-定时器实验
  • (转) ns2/nam与nam实现相关的文件
  • (转)Linux NTP配置详解 (Network Time Protocol)