• MongoDB学习2:MongoDB的基本操作


    以下都是基于MongoShell进行操作

    1.使用insert进行插入操作

     示例:

    db.<集合>.insertOne(<JSON对象>)
    db.<集合>.insertMany([<JSON1>,<JSON2>,...<JSON n>])
    
    例如:
    db.fruit.insertOne({name:"apple"})
    db.fruit.insertMany([
          {name:"apple"},
          {name:"pear"},
          {name:"orange"}
    ])
    

    2.使用find查询文档

     2.1 关于find

       2.1.1 find是MongoDB中查询数据的基本指令,相当于SQL中的SELECT

       2.1.2 find返回的是游标

     2.2 示例

    db.movie.find({"year":1975})  //单条件查询
    db.movie.find({"year":1976,"title":"Batman"})  //多条件and查询
    db.movie.find({$and:[{"title":"Batman"},{"category":"action"}]})  //and的另一种形式
    db.movie.find({$or:[{"year":1989,{"title":"Batman"}}]})  //多条件or查询
    db.movie.find({"title":/^B/}) //按正则表达式查找 B开头的
    

      SQL和MQL查询对照表

    SQLMQL
    a == 1{ a: 1 }
    a <> 1{ a: {$ne:1 } }
    a > 1{ a: {$gt: 1} }
    a >= 1{ a: {$gte: 1} }
    a < 1{ a: {$lt: 1} }
    a <= 1{ a: {$lte: 1} }
    a = 1 and b = 1{ a: 1,b: 1 } 或 { $and: {a: 1},{b: 1} }
    a = 1 or b = 1{ $or: [{a: 1},{b: 1}]} }
    a is null { a: {$exists: false} }
    a in (1,2,3){ a: {$in:[1,2,3]} }
    SQLMQL
    $lt存在并小于
    $lte存在并小于等于
    $gt存在并大于
    $gte存在并大于等于
    $ne不存在或存在但不等于
    $in存在并在指定数组中
    $nin不存在或不在指定数组中
    $or匹配两个或多个条件中的一个
    $and匹配全部条件

     2.3 使用find搜索子文档

      2.3.1 支持"field.sub_field"的形式查询子文档

    假设有如下数据
    db.fruit.insertOne({
      "name":"apple",
      "from":{
        country:"China",
        province:"Beijing"
      }
    })
    
    db.fruit.find({"from.country":"China"})  //查询from下counrty是China的文档
    
    db.fruit.find({"from":{country:"China"}})  //错误写法
    

    3.使用remove删除文档

    • remove命令需要配合查询条件使用
    • 匹配到查询条件的文档会被删除
    • 指定一个空文档条件会删除所有文档

      3.1 示例

    db.movie.remove({a:1})  //删除a等于1的记录
    db.movie.remove({a:{$lt:5}})  //删除a小于5的记录
    db.movie.remove({})  //删除所有记录
    db.movie.remove()  //会报错
    

    4.使用update更新文档

      4.1 示例

    db.<集合>.update(<查询条件>,<更新字段>)
    
    db.fruit.updateOne({name:"apple"},{$set,{name:"banana"}}) //将name为apple的记录更新为banana
    db.fruit.updateOne({name:"apple"},{$set,{from:"China"}}) //将name为apple的记录的from字段更新为China,如果没有这个字段则会新增上
    
    • 使用updateOne表示无论条件匹配了多少记录,始终只更新第一条
    • 使用updateMany表示条件匹配多少条就更新多少条
    • updateOne/updateMany方法要求更新条件部分必须有以下之一,否则会报错
      • $set/$unset
      • $push/$pushAll/$pop
      • $pull/$pullAll
      • $addToSet
    $push增加一个对象到数组底部
    $pushAll增加多个对象到数组底部
    $pop从数组底部删除一个对象
    $pull如果匹配指定的值,从数组中删除相对应的对象
    $pullAll如果匹配任意的值,从数据中删除对应的对象
    $addToSet如果不存在则增加一个值到数组

    4.使用drop删除集合

    • 使用 db.<集合>.drop()来删除一个集合
    • 集合中的全部文档都会被删除
    • 集合相关的索引也会被删除

    5.使用dropDatabase删除数据库

    • 使用db.dropDatabase()来删除数据库
    • 数据库相应的文件会被删除,磁盘空间将被释放
  • 相关阅读:
    基于51单片机的独立按键和矩阵按键用法
    基于51单片机,蜂鸣器和led每秒1滴1亮的程序
    基于51单片机,3秒1亮的程序
    n个灯,隔m个依次点亮的具体情况方法
    单片机的定时器
    有关芯片的认识
    MATLAB变量
    二组玩法介绍
    tkinter的GUI界面
    magento 物流问题
  • 原文地址:https://www.cnblogs.com/xiaoqingtian/p/13423420.html
  • Copyright © 2020-2023  润新知