前言

  1. mongodb是什么?, 需fq
  2. 如何安装mongodb?

数据库基本命令

  1. 显示所有数据库: show dbs

  2. 创建/使用数据库:use dbName

  3. 创建数据库表,在mongoDB里又将表称为集合(collections), 因此创建表:db.createCollection("collectionName")

  4. 显示数据库下的所有集合(表): show tables / show collections

  5. 删除当前数据库: db.dropDatabase()

  6. 查看当前所使用的数据库: db.getName()

  7. 显示当前数据库的状态: db.stats()

  8. 显示当前数据库的版本: db.version()

注意: collectiontable概念差不多,docrow概念差不多。

集合(表)命令

增加数据

  1. 创建一个集合: db.createCollection("tableName")

  2. 添加文档:

    ```

    db.tableName.insert({username: "john", age: "18"})

// 或者

db.tableName.save({username: "john", age: "18"});

// 它们之间的区别

// 1. 使用save,如果对象不存在则插入,如果存在,则会调用update方法。如果是insert,或忽略调用update方法。

// 2. insert可以插入一个列表,而不用遍历,效率高。而save需要遍历,效率不如insert。


### 删除数据

1. 删除操作: `db.tableName.remove({age: 18})`

db.tableName.remove({});


### 更新数据

1. 使用update()更新

db.tableName.update({age: 18}, {$inc: {age:10}}, false ,true)

// 等价于

update tableName set age = age + 10 where age = 18;

// 关于update

db.collection.update(

// {}里的是可选的

// upsert为true表示如果记录存在就更新,不存在就插入新的记录。

// multi为true表示更新所有匹配的文档,如果为false表示只更新第一个文档(默认行为)。


2. 使用save()命令实现upsert

// 如果不指定'_id'值,save()命令会认为它是一个插入操作。

// 如果指定,就是更新。

db.calendars.save({'uid': 'yuzf', 'projectId': 'test'}); // 插入一条数据

db.calendars.save({'_id': 'test', 'uid': 'yuzf', 'projectId': 'test'}); // 更新一条数据


3. 自动更新信息

// 将name为yuzf的人的成绩加4,如果存在就更新,不存在就创建。

db.stu.update({'name': 'yuzf'}, {$inc: {grade: 4}}, {upsert: true});

// 设置字段值

db.stu.update({'name': 'yuzf'}, {$set: {'grade': 200}});

// 删除指定字段

db.stu.update({'name': 'yuzf'}, {$unset: {'grade': 200}});


4. 还有一些其他的,这里只介绍了常用的。

### 查询数据

1. 获取指定名称的集合: `db.getCollection("tableName")`

2. 获取集合里所有的数据:

db.tableName.find().pretty();


3. 获取集合里的指定数据:

db.users.find({'uid', 'yuzf'}).pretty();


4. 获取集合里的指定数据,然后指向看指定数据, 在第二个参数里添加键,并设置键的值为1即可:

db.users.find({'uid': 'yuzf'}, {'uid': 1}).pretty();

```

  1. 使用函数sort, limit, skip
  • 以uid进行排序: db.users.find().sort({ 'uid': 1 });
  • 限制查询结果返回的最大数目为10: db.users.find().limit(10);
  • 返回查询结果除了前20条的文档的其他文档: db.users.find().skip(20);
  1. 使用固定集合、自然顺序和$natural
  • 固定集合必须使用createCollection(), 以显示的方式创建: db.createCollection("users", {capped: true, size: 20480})
  • 因为固定集合的顺序和插入顺序是一样的, 如果想要逆转排序: db.users.find().sort({ $natural: -1 }).limit(10);
  1. 获取单个文档: db.users.findOne();

  2. 使用常用的聚合命令count, distinct, group
  • 统计users表里有多少个文档: db.users.count();
  • 去重: db.users.distinct('uid');, 将会返回一个数组,数组里包含的元素是去重了的uid
  • 将结果分组:

    db.calendars.group({
      key: {uid: true},
      initial: {total: 0},
      reduce: function(items, prev) {
        prev.total += 1;
      }
    });
    
    // 以uid进行分组。
    // 为每个已分组的结果提供一个基数。
    // 正在遍历的当前文档和聚集计数对象(我认为就是那个基数)。
    
    // 最后的结果格式数据是:
    [
      {
        'uid': 'yuzf',
        'total': 1,
      },
      {
        'uid': 'test',
        'total': 3,
      }
    ]
  1. 使用条件操作符
  • 执行大于和小于($lt,$gt,$lte,$gte)比较: db.users.find({ departmentNumber: {$lt: 100} });
  • 获取除uid为yuzf以外的其他文档: db.calendars.find({'uid': {$ne: 'yuzf'}}).pretty();
  • 指定一个匹配的数组($in): db.calendars.find({'uid': {$in: ['yuzf', 'yangh']}}).pretty();
  • 查找某个不在数组中的值: db.calendars.find({'uid': {$nin: ['yuzf', 'yangh']}}).pretty();
  • 匹配文档中的所有属性($all): db.calendars.find({'uid': {$all: ['yuzf', 'yangh']}}).pretty();
  • 在文档中搜索多个表达式: db.calendars.find({'uid': {$or: ['yuzf, 'yangh'']}}).pretty();
  • 使用slice来获取文档(分页): 不知道为什么,自己跑的时候报错,$slice unknown operator
  • 还有一些其他的,感觉不是很常用。

mongoose的使用

未完待续...

参考:

mongoDB基本使用

mongodb大数据处理权威指南

mongodb新手扫盲的更多相关文章

  1. mongodb新手入门,mongodb命令学习

    下面来总结一下mongodb新手入门的常用命令吧.要是您是mongodb新手,可以看下. 1,show dbs 查询mongodb里面的数据库列表 如果想查看当前连接在哪个数据库下面,可以直接输入db ...

  2. mongodb新人扫盲

    前言 数据库基本命令 集合(表)命令 增加数据 删除数据 更新数据 使用update()更新 使用save()命令实现upsert 自动更新信息 查询数据 mongoose的使用 前言 mongodb ...

  3. MongoDB 快速扫盲贴

    长话短说 经过996的历练,开发者潜意识里总是以object的视角看待事物, 现在某些数据库也具备这样的视角. MongoDB是一个文档型(类JSON 文档)数据库,相比传统的关系型row/colum ...

  4. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

  5. Linux新手扫盲(转载)

    一. Linux特点 1.免费/开源: 2.支持多线程/多用户: 3.安全性好: 4.对内存和文件管理优越. Linux最小只需4M ——> 嵌入式开发 二. 文件目录 Linux系统所有软硬件 ...

  6. Linux新手扫盲

    一. Linux特点 1.免费/开源: 2.支持多线程/多用户: 3.安全性好: 4.对内存和文件管理优越. Linux最小只需4M ——> 嵌入式开发 二. 文件目录 Linux系统所有软硬件 ...

  7. X32,X64,X86 代表什意义

    X32,X64,X86是什么意思 各代表什么:X86指32位,X64指64位,现在用户最多的是XP,但win7是趋势,发展很快,建议你装个win7 32位的系统,下载的话地方很多,官方安装原版和gho ...

  8. Mac新手从入门到放弃MongoDB

    1. 简介 MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最 ...

  9. 新手立体四子棋AI教程(1)——基础扫盲

    一.引言 最近身边好几个朋友开始玩立体四子棋,激起了我的好奇心.那么首先来说什么是[立体四子棋],规则又是如何呢? 上图即为立体四子棋,规则类似于五子棋四子连在一起,但是四子棋更加多样.丰富.不仅可以 ...

随机推荐

  1. 如何在Ubuntu_16_04下使用MySql的GR

    一.前言 该文章主要是记录下从一个纯净的系统开始如何安装MySql 5.7.17 并且使用GR,以便于自己后期查看以及分享给他人. 二.安装mysql 因为默认ubuntu的源并不是最新的mysql所 ...

  2. 【转】ActionScript,Flash,Flash/Flex Builder,FlashPlayer,AIR,swf,swc,swz之间的区别

    原文链接:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的程序,最终可以编译成 ...

  3. 手机自动化测试:appium源码分析之bootstrap二

    手机自动化测试:appium源码分析之bootstrap二   在bootstrap项目中的io.appium.android.bootstrap.handler包中的类都是对应的指令类, priva ...

  4. 4日6日--Math的常用方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 使用Jersey实现图片服务器与应用服务器分离

         现在模拟一下Jersey从客户端发送图片到服务器.   1.Tomcat准备 (1)解压一个新的Tomcat作为图片服务器,然后修改端口号(有3处).                (2)然 ...

  6. JDBC基础学习(一)—JDBC的增删改查

    一.数据的持久化     持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...

  7. lambda和委托

    Lambda 简介 Lambda 表达式是一种可用于创建委托或表达式目录树类型的一种匿名函数(匿名方法+Lambda).通过使用 lambda 表达式,可以写入可作为参数传递或作为函数 调用值返回的本 ...

  8. SQL Server函数​---Union与Union All的区别

    SQL Server函数---Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称 ...

  9. UEFI+GPT下安装Win10+Ubuntu16.04双系统

    安装环境 SSD+HDD双盘,Win10安装在SSD里,HDD分出来60G安装Ubuntu. 自行百度你的主板是否支持UEFI启动方式. Win10 下载Win10安装镜像.烧盘等步骤就不说了,重启后 ...

  10. zlog学习随笔

    zlog1使用手册 Contents Chapter 1  zlog是什么? 1.1  兼容性说明 1.2  zlog 1.2 发布说明 Chapter 2  zlog不是什么? Chapter 3  ...