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;

mongdb基本操作和更新操作的更多相关文章

  1. 《mongoDB》基本操作-创建/更新/删除文档

    一:基本操作 - db; 当前选择的集合(等于数据库名) > db demo -  use db_name; 选择你要操作的集合 > use demo switched to db dem ...

  2. Go语言学习教程:xorm表基本操作及高级操作

    在上节内容中,我们介绍了xorm框架表结构的映射规则和表结构的操作.本节课,继续来深入学习表结构基本操作和高级查询的相关功能. 表结构基本操作 对表结构的操作最常见的操作是查询和统计相关的方法,我们首 ...

  3. python学习9—文件基本操作与高级操作

    python学习9—文件基本操作与高级操作 1. 文件基本操作 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并 ...

  4. MongoDB 文档的更新操作

    在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...

  5. 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理

    由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的 ...

  6. java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0

    日常开发中,做更新操作的时候的处理方法为:当这个字段有值则更新,没有值就不更新,在mybatis的xml中表现为: <!-- 修改记录,只修改只不为空的字段 --> <update ...

  7. 对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了

    原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: ...

  8. Java配置文件Properties的读取、写入与更新操作

    /** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...

  9. 对Java配置文件Properties的读取、写入与更新操作

    http://breezylee.iteye.com/blog/1340868 对Java配置文件Properties的读取.写入与更新操作 博客分类: javase properties  对Jav ...

随机推荐

  1. 使用WPF制作视频监控多画面切换

    前言 曾有做过一个产品,有一个功能是视频监控模块,视频监控首先想到的是视频多画面切换功能,由于前端是用WPF开发的,所以当时就做了一个多画面切换组件,效果如下: 功能设计前提: 由于要使用海康大华天地 ...

  2. WPF ListBox的进阶使用(二)

    项目中经常使用需要根据搜索条件查询数据,然后用卡片来展示数据.用卡片展示数据时,界面的宽度发生变化,希望显示的卡片数量也跟随变化.WrapPanel虽然也可以实现这个功能,但是将多余的部分都留在行尾, ...

  3. ST表的原理及其实现

    ST表类似树状数组,线段树这两种算法,是一种用于解决RMQ(Range Minimum/Maximum Query,即区间最值查询)问题的离线算法 与线段树相比,预处理复杂度同为O(nlogn),查询 ...

  4. spark踩坑——dataframe写入hbase连接异常

    最近测试环境基于shc[https://github.com/hortonworks-spark/shc]的hbase-connector总是异常连接不到zookeeper,看下报错日志: 18/06 ...

  5. 安装openvpn

    1.安装服务器端openvpn  yum install -y openvpn easy-rsa 如果已存在的yum源中找不安装文件,则可通过以下安装epel yum源 rpm -ivh http:/ ...

  6. Linux巩固记录(9) keepalived+nginx搭建高可用负载分发环境

    环境准备(继续服用hadoop节点) slave1  192.168.2.201(CentOs 7) slave2  192.168.2.202(CentOs 7) slave1 和 slave2 上 ...

  7. 用mac的safari浏览器调试ios手机的网页

    iOS 6给Safari带来了远程的Web检查器工具. 一.参考链接 ios开发者文档 safari开发者工具 remote debugging safari 二.设置iphone 设置 -> ...

  8. WebDriver高级应用实例(2)

    2.1在日期选择器上进行日期选择 被测网页的网址: https://www.html5tricks.com/demo/Kalendae/index.html Java语言版本的API实例代码 impo ...

  9. 【sping揭秘】5、IOC容器(一)

    OC容器实现过程 1. 容器启动阶段,读取配置文件,解析文件BeanDefinitionReader 2. Bean 实例化阶段 关于BeanFactoryPostProcessor 插手spring ...

  10. asp.net core中遇到需要自定义数据包解密方法的时候

    最近将公司的项目用.netcore重写, 服务的http外部接口部分收发消息是DES加解密的, 那么在asp.net core mvc的action处理之前需要加入解密这个步骤. 我第一想到的是用fi ...