• mongdb基本操作和更新操作


    1、创建数据库 use hqj 不会真正的创建db,只有insert之后才会创建
    2、查看数据库show dbs
    3、插入文档db.hqj.insert({name:'111'})
    4、查看所有的文档show tables / show collections.查询文件中的集合db.hqj.find()/db.hqj.findOne();
    5、更新文档db.hqj.update({name:'111},{$set:{name:'2222'}}) 前面是查询器后面是修改器
    也可以var data = db.hqj.find();db.table.update(data,{name:'3333'}) 这个会把key覆盖,没有的会添加
    db.table.update({name:"坚持"},{$set:{age:22,name:"name",sex:'男'}})会追加age和sex 如果数据库中有相同记录默认只会修改第一条
    6、删除数据库中的记录db.table.remove({name:"111"}) db.table.remove({})删除所有 索引不会被删除
    7、删除数据库中的集合db.table.drop()
    8、删除数据db.dropDatabase()
    9、查询当前数据库名称db.getName() //可以使用db.help() collections.help()
    10、查询当前数据库状态db.stats()
    11、可以定义function函数相当于存储过程 也可以使用eval()
    12、更新操作db.table.update({查询器},{更新器},false||true(没有找到数据执行insert),false||true(是否批量更新))
    如果更新操作是db.table.update({name:'2'},{age:222})--->就会替换{age:22}替换之前的对象
    当更新操作有重复的_id的时候会报错.更新不了
    13、更新器
    1、$set 存在更新,不存在添加key db.table.update({name:1},{$set:{name:1111,age:23}}}) 如果没有age会添加age
    2、$inc 累加db.table.update({id:12},{$inc:{age:20}}) 这时候age会累加20原来的基础上+20 如果是负数-20 就会减去20
    3、$unset 删除指定的key db.table.update({id:1},{$unset:{age:"age"}}) 卸载unset.age:value可以随意写
    4、$push 添加到数组中,如果key不是数组.报错.如果key是数组类型,把元素追加到数组中,如果key不存在,创建新的数组追加元素 不会能批量添加
    5、$pushAll 如果把元素添加到数组中.需要批量添加,db.table.update({id:1},{$pushAll:{array:["1","2","3","4","5","6"]}})
    6、$addToSet 如果原数组中包含01值,db.table.update{{_id:1},{$addToSet:{array:'01'}}}这种情况不会添加,如果不存在01才会添加
    7、$pop 删除数组中的元素 -1 从头开始删除 1从尾部开始删除db.table.update({id:1},{$pop:{array:-1}})||db.table.update({},{$pop:{array:1}})
    8、$pull 删除数组中的元素,根据数组中指定元素删除db.table.update({id:1},{$pull:{books:"01"}})
    9、$pullAll批量删除数组中的元素db.table.update({id:1},{$pullAll:{array:['2','3']}})
    10、$ 更新数组中的对象比如:array:[{type:'type1',name:'name1'},{type:'type2',name:'name2'},{type:'type3',name:'name3'}]
    更新数组中的对象需要使用到数组的定位器$,查询条件必须是数组的类型比如{"array.type":'type3'}
    更新db.table.update({"array.type2":"type2"},{$set:{"array.$.newValue":'新值'}}) 为array.type2这个对象中添加一个newValue:'新值'
    array:[{type:'type1',name:'name1'},{type:'type2',name:'name2',newValue:'新值'},{type:'type3',name:'name3'}]
    11、$addToSet和$each结合实现数组的批量添加,db.table.update({_id:1},{$addToSet:{array:{$each:[1,2,3,4]}}})
    14、mongodb内存分配.
    mongodb会给每个文档分配内存和一个预留内存.但文档中的key不断增多,内存不断增大,预留内存也分配完了.这个时候更新操作的速度就下降,mongo会重新分配内存
    15、两个重要的函数runCommand和findAndModify 可以返回更新和删除的数据.但是一次只能更新一条数据
    var v = db.runCommand({ var d = db.runCommand(
    findAndModify:'table', //集合名称 findAndModify:'colleactionName',
    query:{_id:1} ,//查询器 query:{_id:1},
    update:{$set:{age:1}},//更新器 sort:{排序},
    new:true, new:true, update:{} ,remove:true
    }).value ; //返回更新后的数据 }).value;
  • 相关阅读:
    idea git 操作
    1
    python 迭代器/生成器/迭代对象
    python 中的type
    systemd 配置文件
    python 中类的初始化过程
    mysql主从错误180301
    从零开始搭建k8s-20180301
    kubernetes role
    Java程序员毕业两年自述
  • 原文地址:https://www.cnblogs.com/houqijun/p/7668051.html
Copyright © 2020-2023  润新知