• mongodb增删改查操作


    Note:mongodb存储的是文档,且文档是json格式的对象,所以增删改查都必须是json格式对象。

    注:mongodb常用库和表操作,但mongodb在插入数据时,不需要先创建表。

    show databases; #查看已有数据库
    use dataName; #选择数据库,如果不存在库,则会自动创建。
    show tables; # 查看已有的表
    show collections # 同上,
    db.createCollection('表名');#建表
    db.表名.drop(); #删除表
    
    注:table在mongodb里叫collections

    1、增加数据,语法: db.collectionName.isnert(document)。

    #不指定文档的id,数据库会默认分配一个随机id
    db.user.insert({name:'zhaos',age:23,sex:'f'});
    #指定文档的id
    db.user.insert({_id:5,name:'zhaos',age:23,sex:'f'});
    #增加单个文档
    db.user.insert({_id:6,name:'zhaos',age:23,sex:'f'});
    #增加多个文档 
    db.user.insert([{_id:2,name:'zhangs',age:21,sex:'m'},{_id:3,name:'wangw',age:22,sex:'m'},{_id:4,name:'zhaos',age:23,sex:'f'}]);

    注意,这里解释下自动生成的id,MongoDB采用了一个ObjectId的类型来做主键,ObjectId是一个12字节的 BSON 类型字符串,按照字节顺序,依次代表:

        4字节:UNIX时间戳 
        3字节:表示运行MongoDB的机器 
        2字节:表示生成此_id的进程 
        3字节:由一个随机数开始的计数器生成的值 

    2、删除数据,语法: db.collection.remove(查询表达式, 选项)。选项是指需要删除的文档数,{0/1},默认是0,删除全部文档

    #将所有_id=7的文档删除
    db.user.remove({_id:7})  
    #将gender:'m'的所有文档删除
    db.user.remove({gender:'m'})
    #只删除一个gender:'m'的文档,num是指删除的文档数
    db.user.remove({gender:'m',1})

    3、修改数据,语法: db.collection.update(查询表达式,新值);

    #从结果可以看出,这只是在替换一个文档,并非修改一个文档字段
    > db.user.update({name:'zhangs'},{name:'liul'})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.user.find();
    { "_id" : 2, "name" : "liul" }

    #修改一个文档的字段,必须使用$set:{属性:'值'}
    > db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.user.find();
    { "_id" : 6, "name" : "kongkong", "age" : 23, "sex" : "f" }


    修改时的赋值表达式
    $set 修改某列的值
    db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})

    $unset 删除某个列
    eg:db.user.update({name:'kongkong'},{$unset:{name:'kongkong'}})

    $rename 重命名某个列
    eg:db.user.update({_id:6},{$rename:{sex:'gender'}})
    eg:db.user.update({},{$rename:{'sex':'gender'}},{multi:true})

    $inc 增长某个列
    eg:db.user.update({_id:6},{$inc:{age:2}})

    $setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段.
    eq:db.user.update({_id:7},{$setOnInsert:{age:5,gender:'f'}},{upsert:true})

    4、查找数据,语法: db.collection.find(查询表达式,查询的列)。

    #查询一个表中的所有文档    
    db.user.find()
    
    #查询特定属性的文档
    db.user.find({_id:3})
    
    #查询所有文档,显示gender列,不显示id
    db.user.find({},{gender:1,_id:0})
    
    #查询所有gender:'m'的文档,显示gender列,age列,不显示id
    db.user.find({gender:'m'},{gender:1,_id:0,age:1})

    5、高级查询知识点。

    #not equal 不等于
    $ne ---> != 查询表达式
    #查询age不等于25的文档
    db.user.find({age:{$ne:25}})

    #great than 大于
    $gt ---> >
    db.user.find({age:{$gt:20}})

    #great than equal 大于等于
    $gte ---> >=
    db.user.find({age:{$gte:25}})

    #less than 小于
    $lt ---> <=
    db.user.find({age:{$lt:25}})

    #less than equal 小于等于
    $lte ---> <=
    db.user.find({age:{$lte:25}})


    #$in --> in
    #查询age为20和25的文档
    db.user.find({age:{$in:[20,25]}})

    #$nin --> not in
    #查询age不为20和25的文档
    db.user.find({age:{$nin:[20,25]}})


    #$or
    语法: {$or:[v1,v2..]}
    是指取出 field列是一个数组,且至少包含 v1,v2值
    db.user.find({$or:[{age:{$gte:30}},{name:"Zhaos"}]})


    #$and
    语法: {$and:[{<operator-expression>},{<operator-expression>}..]}
    是指取出 field列是一个数组,且至少包含 v1,v2值
    db.user.find({$and:[{age:{$lte:30}},{age:{$gte:5}}]})


    #$not
    语法:{field:{$not:{ <operator-expression> }}}
    是指取出 field列是一个数组,且至少包含 v1,v2值
    db.user.find({age:{$not:{$gt:25}}})

    #$all
    语法: {field:{$all:[v1,v2..]}}
    是指取出 field列是一个数组,且至少包含 v1,v2值
    db.user.find({age:{$all:[30]}})

    $exists
    语法: {field:{$exists:1}}
    作用: 查询出含有field字段的文档
    #查询含有age列的文档
    db.user.find({age:{$exists:1}})

    $mod
    语法: {field:{$mod:[ divisor(除数), remainder(余数)]}}
    作用: 查询出含有mod字段的文档
    #查询含有age列的文档
    db.user.find({_id:{$mod:[5,0]}})


    $nor
    {$nor,[条件1,条件2]}
    是指所有条件都不满足的文档为真返回
    #查询所有age不为30,gender不为f的文档
    db.user.find({$nor:[{age:30},{gender:'f'}]})

    正则表达式查询
    #查询所有以name:yang开头的文档 /patern/
    db.user.find({name:/yang*/})
    #查询所有以name:zhao开头的文档,且不区分大小写 /patern/i
    db.user.find({name:/zhao/i})

    $where
    #查询age>6,且age<22的文档
    db.user.find({$where:"this.age>6" && "this.age<=22"})

  • 相关阅读:
    编写一个函数将一个十六进制数的字符串参数转换成整数返回?
    设置一段文字的大小为6px?
    写clone()方法时,通常都有一行代码,是什么?
    abstract class和interface有什么区别?
    JDBC中的Statement 和PreparedStatement的区别?
    什么是MVC模式?   
    Struts2的Action中获取request对象的几种方式?
    Struts2的功能扩展点有哪些?
    说说&和&&的区别?
    Struts2里面有什么隐式对象?
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10129007.html
Copyright © 2020-2023  润新知