天天看点

MongoDB 安装以及基本语法使用

  1. MongoDB介绍 
    1. 一个数据库对应多个集合
    2. 一个集合对应多个文档对象
    3. 在mongo中不论是db还是集合,你都无需去创建他
    4. 直接就当他已经存在,直接Use来使用
      • use db名称;
        • 接着会被切换到该db中
        • db.要创建的集合名称.save({})

          ;这样集合就被创建了
  2. 下载与安装
    1.  MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装。 官方地址:下载地址
    2. 博主下载的是3.4版本: 下载地址
    3. 点击运行程序
      MongoDB 安装以及基本语法使用
      MongoDB 安装以及基本语法使用
  3. 启动服务器
    1. mongod --dbpath "D:/mongodb"

      // 目录一定要存在自己创建随便名称‘
      1. 尽量设置在非系统盘

        C盘生成目录是需要权限的

    2. 如果看到

      waiting for connections on port 27017

      说明服务已经启动

mongodb 基本操作

- 客户端连接服务器**另开一个命令行**
  - `mongo` 默认连接的是test数据库
- 查询有哪些数据库  
  - 查询数据库:`show dbs;`
  - 切换数据库: `use 数据库名;`
- 查询当前db下有哪些集合
  - `show collections;`
- 查询数据:
  - `db.集合名.find();`  //查询出来的是文档对象 document
  - `db.users.find();`
- 添加数据:
  - `db.集合名.save(对象)` //mongo默认会给我们加入_id作为该文档对象的唯一标识
  - `db.users.save({contry:'中国',name:'小明',score:77});`
- 删除数据:
  - `db.集合名.remove(条件对象);`//条件匹配就会被删除
  - `db.users.remove({name:'小明'});`
  - 如果给定一个空对像,会匹配全部
- 更新数据:
  - `db.集合名.update({匹配条件对象},{$set:{修改后的对象}});`
  - `db.users.update({name:'小明'},{$set:{contry:'印度'}});;`

#### 分页

- `db.users.find().skip(3).limit(3);`
- db.集合名称.find().跳到3.显示3条
  ​    + limit 0,3

#### 排序

- `db.users.find().sort({key:排序方式});`
- `db.users.find().sort({'score':1});` //正数代表升序,负数代表降序

#### 模糊匹配

- `db.users.find({name:{$regex:'小'}});`
- `db.users.find({name:{$regex:'明'}});`

#### 聚合函数

- 需要求当前集合的记录数:
- `db.users.find().count();`
- 求最大值
  -求整个集合的总成绩
  ​    + db.集合名.聚合({ 组的划分规则{_id:'1',显示内容:{$sum:'$score'}} })
  - 求所有人的平均分
    - `db.users.aggregate({$group:{_id:'1',sumscore:{$avg:'$score' } }});`
  - 求按国家分组,求所有国家的总分
    - `db.users.aggregate({$group:{_id:'$contry',sumScore:{$sum:'$score'}}});`
- 添加基础数据:
  db.users.save({contry:'中国',name:'小明',score:77});
  db.users.save({contry:'中国',name:'小红',score:88});
  db.users.save({contry:'中国',name:'小张',score:99});
  db.users.save({contry:'美国',name:'jack',score:45});
  db.users.save({contry:'美国',name:'rose',score:67});
  db.users.save({contry:'美国',name:'mick',score:89});



#### 联合查询

```js
db.orders.insert([
   { "_id" : 1, "item" : "almonds", "price" : 12, "quantity" : 2 },
   { "_id" : 2, "item" : "pecans", "price" : 20, "quantity" : 1 },
   { "_id" : 3  }
]);
db.inventory.insert([
   { "_id" : 1, "sku" : "almonds", description: "product 1", "instock" : 120 },
   { "_id" : 2, "sku" : "bread", description: "product 2", "instock" : 80 },
   { "_id" : 3, "sku" : "cashews", description: "product 3", "instock" : 60 },
   { "_id" : 4, "sku" : "pecans", description: "product 4", "instock" : 70 },
   { "_id" : 5, "sku": null, description: "Incomplete" },
   { "_id" : 6 }
]);
db.orders.aggregate([
   {
     $lookup:
       {
         from: "inventory",
         localField: "item",
         foreignField: "sku",
         as: "inventory_docs"
       }
  }
]);
```