美文网首页
mogodb 基本常用sql操作

mogodb 基本常用sql操作

作者: 快跑吧小姑娘快跑 | 来源:发表于2017-03-14 18:08 被阅读0次

    插入

    • 插入一条数据
    db.mytest.insertOne({name:"妖巳",age:5})
    返回document
    {
       "acknowledged" : true,
       "insertedId" : ObjectId("56fc40f9d735c28df206d078")
    }
    
    • 插入多条数据
    db.mytest.insertMany([{name:'timecoder'},{name:'joe',age:18,times:159}])
    返回document
    {
       "acknowledged" : true,
       "insertedIds" : [
          ObjectId("562a94d381cb9f1cd6eb0e1a"),
          ObjectId("562a94d381cb9f1cd6eb0e1b"),
          ObjectId("562a94d381cb9f1cd6eb0e1c")
       ]
    }
    
    • 可以插入一条也可以插入多条,返回WriteResult
    db.mytest.insert([{name:'timecoder'},{name:'joe',age:18,times:159}])
    

    删除

    • 删除集合
    db.mytest.drop()
    
    • 删除一条数据
    db.mytest.deleteOne({status:"A"})
    
    • 删除多条数据
    db.mytest.deleteMany({status:"A"})
    
    • 删除多条或一条数据
    db.mytest.remove()//删除所有
    db.mytest.remove({status:"A"},{justOne:true})//删除一条
    db.mytest.remove({status:"A"})//删除多条
    

    更新

    • 更新格式

    查询条件和查询的语法一样,会在后面查询中做详细记录

    db.mytest.update({查询条件},{更新的内容},{操作选项})
    
    • 更新一条记录

    $set 当文档中不存在 age 字段的时候会添加

    db.mytest.update({},{ $set: { name:"张佳宁2" ,age:5,size:32,shows22:"afan"} })
    db.mytest.updateOne({},{ $set: { name:"张佳宁2" ,age:5,size:32,shows22:"afan"} })
    
    
    • 更新多条记录
    //multi=true 表示更新多条
    db.mytest.update({},{ $set: { name:"张佳宁2" ,age:5,size:32} },{ multi: true })
    db.mytest.updateMany({},{ $set: { name:"张佳宁2" ,age:5,size:32,shows22:"afan"} })
    
    • 更新并插入
    //更新多条,且如果没有匹配到type=9的文档时插入,upsert默认为false
    db.mytest.update({type:9},{ $set: { name:"张佳宁2" } },{ multi: true,upsert:true})
    
    • 或条件更新
    //相当于sql: update set name="张佳宁" where type=1 or type=2
    db.mytest.updateMany({$or:[{type:1},{type:2}]},{ $set: { name:"张佳宁" } })
    
    • 且条件更新
    db.mytest.update({type:9,age:32},{ $set: { age:5} },{ multi: true})
    

    • field更新操作符

    $set 修改field值,当不存在的时候则新增

    $inc 加法操作,当不存在field则新增

    db.mytest.update({type:9},{ $inc: { age:5} },{ multi: true})//age会+5
    

    $mul 乘法操作,当不存在field则新增

    $rename field重命名操作,当不存在field则不操作

    db.mytest.update({type:9},{ $rename: { age:"age4"} },{ multi: true})//age会重命名为age4
    

    $setOnInsert 当且仅当upsert:true 且 $set的field不存在需要新增时,该操作才会生效

    db.mytest.update(
        {type:9},
        { $set:{age:5},$setOnInsert: { ageIN:777} },
        { multi: true,upsert:true}
    )
    

    $unset 删除field

    db.mytest.update({type:9},{ $unset:{age:""} },{ multi: true})
    

    $min 小于操作,当$minage<集合中的age会生效

    //比如原来age=20的会被更新为5,而age=4的不会被更新
    db.mytest.update({type:9},{ $min:{age:5} },{ multi: true})
    

    $max 大于操作,用法同$min

    $currentDate 设置当前日期,默认为date,需要timestamp时需要单独指定

    db.mytest.update(
        {type:9},
        { $currentDate: {mydate:true,mystamp:{$type:"timestamp"}}},
        { multi: true}
    )
    

    • array更新操作符(即field为数组时才生效)

    $addToSet 当数组元素中不存在需要添加的元素时才会被添加

    db.mytest.update({type:9},{ $addToSet: {colors:"yellow"  } },{ multi: true})
    

    $pop 移除数组的第一个或最后一个元素

    db.mytest.update({type:9},{ $pop: {colors:1 } },{ multi: true})//移除最后一个 
    db.mytest.update({type:9},{ $pop: {colors:-1 } },{ multi: true})//移除第一个 
    

    $pullAll 移除多个指定数组元素

    db.mytest.update(
        {type:9},
        { $pullAll: {colors:["red","yellow"] } },
        { multi: true}
    )//移除最后一个 
    

    $pull 移除指定条件的元素,只能是单个

    //移除colorsvalue大于6的数组元素
    db.mytest.update( {type:9 }, { $pull: { colorsvalue: { $gt: 6 } } } )
    //移除colors为red的数组元素
    db.mytest.update( {type:9 }, { $pull: { colors: "red" } } )
    

    $push 添加一个元素到数组

    db.mytest.update({type:9},{ $push: {colors:["fu"] } },{ multi: true})
    

    $each 配合$push和$addToSet添加多个数组元素

    //添加多个
    db.mytest.update(
        {type:9},
        { $push: {colors:{$each:[["fu2"],"red1","re2d"]} } },
        { multi: true}
    )
    //当不存在才添加
    db.mytest.update(
        {type:9},
        { $addToSet: {colors:{$each:[["fu2"],"red1","re2d"]} } },
        { multi: true}
    )
    

    查询

    • 查询所有
    db.mytest.find()
    
    
    • 比较条件
    比较操作符 sql操作符
    $eq =
    $gt >
    $gte >=
    $lt <
    $lte <=
    $ne !=
    $in in(x,x,x)
    $nin not in(x,x,x)
    db.mytest.find({type:9}) //select * from mytest where type=9
    db.mytest.find({type:{$eq: 8}}) //select * from mytest where type=9
    
    db.mytest.find({type:{$gt: 8}})//select * from mytest where type>9
    
    db.mytest.find({type:{$in: [9,3]}})
    
    • 逻辑条件
    逻辑操作符 sql操作符 描述
    $or or
    $and and
    $not not 逻辑非,与其他操作符搭配使用
    $nor 同not 支持多个表达式的非

    $and $or

    // select* from mytest where type>9 or type < 5
    db.mytest.find({ $or: [{ type: { $gt: 9 } }, { type: { $lt: 5 } }] })
    // select* from mytest where type>5 and type < 9
    db.mytest.find({ $and: [{ type: { $lt: 9 } }, { type: { $gt: 5 } }] })
    
    
    
    db.mytest.find( {
        $and : [
            { $or : [ { type : 6 }, { type :5 } ] },
            { $or : [ { age : 15 }, { age : { $lt : 20 } } ] }
        ]
    } )
    //select * from mytest where (type=6 or type=5) and (age=15 or age<20)
    
    

    $not

    type小于6或者等于6或者==type不存在的文档==

    db.mytest.find( { type: { $not: { $gt: 6 } } } )
    

    $nor

    //select * from mytest where type!=9 and age !=15
    db.mytest.find( { $nor: [ { type: 9 }, { age: 15 } ]  } )
    

    参考

    相关文章

      网友评论

          本文标题:mogodb 基本常用sql操作

          本文链接:https://www.haomeiwen.com/subject/jcghnttx.html