Fork me on GitHub

MySQL


基本概念

  • 数据库(database)
  • 集合(collection)
  • 文档(document)
    • 数据库和集合在MongoDB中不需要手动创建
      • 当创建文档时,如果文档所在集合或数据库不存在会自动创建数据库和集合

Mongodb的windows服务安装和卸载

安装
: mongod --dbpath "C:\mongodb\db" --logpath "C:\mongodb\log.txt" --install --serviceName "MongoDB"

卸载
: mongod.exe --remove --serviceName "MongoDB"

1、了解Mongodb

MongoDB数据库中存的是各种各样的JSON(BSON)

2、更换MongoDB的database文件夹

mongod --dbpath 文件夹地址

3、运行MongoDB

#####命令行下运行 MongoDB 服务器
为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。
C:\mongodb\bin\mongod --dbpath c:\data\db

4、重新设置端口

C:\mongodb\bin\mongod 数据库路径 --port 123456

注意
: 端口数最大不能超过65535

5、连接MongoDB

我们可以在命令窗口中运行 mongo.exe 命令即可连接上 MongoDB,执行如下命令:
C:\mongodb\bin\mongo.exe


6、启动MongoDB

要启动 MongoDB,请运行 mongod.exe 。
例如,从命令提示符:
D:\Program Files\MongoDB\Server\3.4\bin\mongod.exe

注意:如果不使用 –dbpath 指定数据存储的目录,
那么 MongoDB 默认使用的是 C:\data\db目录,所以在启动 MongoDB 数据库之前要确保 C:\data\db 目录已经创建了。

  1. 在mongodb\bin下打开命令行模式:
    (启动服务器)
    D:\mongodb\bin>mongod
  2. 验证Mongdb启动成功
    在Chrome浏览器下,打开localhost:27017
    若出现It looks like you are trying to access MongoDB over HTTP on the native driver port. 则登录成功
  3. 打开mongo
    命令行下输入mongo,进入mongo的客户端命令模式


    命令

  4. show dbs命令可以显示所有数据库的列表。
    • show collections 显示数据库中的所有集合
  5. db 命令可以显示当前数据库对象或集合。
  6. use 数据库名命令,可以进入到一个指定的数据库。
    • 可以创建任意数据库
  7. MongoDB 的 CRUD(增删改查)操作

    增添

  • db.集合名.insert(doc)
    : 在集合中插入一个文档doc,为**json格式** { :,: }
    
    • 若要插入多个doc,则用列表形式
    • 向集合插入文档时,若没有给文档指定_id属性,则数据库会自动为文档添加_id
      • 该属性为文档的唯一标识
      • 可以自己指定_id ,”_id”=” “
    • 使用循环,插入多条数据
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      // 方法1
      for(var i=1 ; i <200 ; i++){
      db.user.insert({num:i}) //需要调用200次insert方法,效率低
      }

      //方法2
      var arr = [];
      for(var i=1 ; i<200 ; i++){
      arr.push({num:i}); //将num从1到200添加到数组arr中
      }
      db.num.insert(arr) //只需调用一次 insert方法

查找

  • db.集合名.find()
    : 查询当前集合中的所有文档
    `db.collection.find()`
    `find()`返回的是数组,若要查询其中某个属性,则要添加索引`[0]`
    
    • find()用来查询集合中所有符合条件的文档,返回一个数组,可以加索引
    • 增加查询条件
      • {}:{属性:值} 查询指定属性的文档
      • MongoDB支持直接通过内嵌文档的属性查询,若要查询内嵌文档,则可以通过.的形式来匹配此时属性名必须使用引号
        • db.user.find({"hobby.movies":"hero"})
更多方法 用处 拓展
findone() 查询符合条件的第一个文档对象
find().count() 统计所有文档的数量
find({num:{$gt:200}}) 查找数字大于200的数据 $gte: >= $lt:< $lte:<= $ne:!=
find().limit(10) ==limit()== 可以设置显示数据的上限,即显示10条
find().skip(10).limit(10) ==skip()== 用于跳过指定的数据,该命令可以查询第11-20条数据 其中skip(),limit()顺序可以倒换
finf({$or:[{a:1},{b:2}]}) 查询a属性为1或b属性为2的集合
1
2
3
4
// 查找用户订单,使用用户ID作为索引
// 向商品属性中添加用户ID做索引
var user_id = db.users.findone({username:""})._id;
db.order.find({user_id:user_id});

修改

  • db.collection.update(查询条件,新对象)

    : 修改文档内容
    方法:`updateMany`,`updateOne`
    
    1
    2
    // 利用update实现updateMany 和 updateOne 的功能
    db.user.update( {name:"jedieal"},{$set:{ age=28 }},{multi:true});
    • 注意:update()默认情况下会使用新对象来替换旧的对象
      • 如果需要修改指定的属性,而不是替换,则需要使用“修改操作符”来完成
        • $set:可以用来修改,增添文档属性
        • $unset:可以用来删除文档属性
      • 例子1:db.user.update({name:"jedieal"},{age:28}); : ==age==会将==name==内容给替换
      • 例子2:db.user.update({name:"jedieal"},{$set:{ age=28 }});
        • 利用$set,只对age进行修改,还可以用来添加值
      • 删除属性,还是属于修改
      • 修改集合属性的数组内的数据
        • 1 db.user.update({ },{$push :{"hobby.movies":"hero"}})
        • 2 db.user.update({ },{$addToSet :{"hobby.movies":"hero"}}) : 若要加入的元素与数组内有相同的,则不会添加
更多方法 作用
{$inc:{a:2}} 在a的值的基础上加上2 要减少,可以将2变为-2

删除

  • db.collection.remove()

    • db.collection.deleteOne();,db.collection.deleteMany(;
    • ==remove()==
      : 可以根据条件来删除文档,传递的条件的方式和==find()== 一样

      • 删除一个 db.collection.remove({ },true);
      • 删除所有文档,清空集合(性能略差) db.collection.remove({})
        • 清空集合(优化) db.collection.drop()
      • 删除数据库 db.dropDatabase()
    • 一般数据库中的数据都不会删除,所以删除的方法很少用
  • 一般会在数据中添加一个字段,来表示数据是否被删除

    • db.collection.update({ },{$setZ:{isDel:0}})

    • db.collection.find({isDel:0})
      : 利用==isDel==作为标准,0代表没删除,1 代表删除


NOSQL (Not Only SQL)

数据库

  • 数据库的服务器

    • 用于保存数据
    • mongod 用于启动服务器
  • 数据库的客户端

    • 用于操作数据,对数据进行增删改除
    • mongo 用于启动客户端
喜欢的可以对我打赏了哟~