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. 获取webpart方法以及连接字符串记录

    在页面地址后面添加?contents=1就可以显示所有页面的webpart部件了 server=wtcsps05;database=Testing_DB;uid=sqluser;password=wt ...

  2. 关于css中float的理解

    感觉css里的float是个非常神奇的东西,神奇之处在于,你知道它是什么意思,但是用的时候总是不知道怎么实现效果.又或者它会很容易地影响到别的元素和属性.所以今天打算尝试一下float的各种设置,看看 ...

  3. css伪元素:before和:after用法详解

    css的伪元素,之所以被称为伪元素,是因为他们不是真正的页面元素,html没有对应的元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用诸如页面元素一样的css样式,表面上看上去貌似是页面 ...

  4. Linux 安装JavaEE环境之Tomcat安装笔记

    1.先用xftp将tomcat的压缩包上传到 /opt/ 2.在/usr/local/下使用命令mkdir tomcat 创建tomcat目录 将apache-tomcat-7.0.70.tar.gz ...

  5. 常用下载方式的区别-BT下载、磁力链接、电驴

    出处:https://www.jianshu.com/p/72b7a64e5be1 打开 115 离线下载的窗口,看到支持这么多种链接,你都清楚他们是什么原理嘛?接下来我们一个一个说. 一.HTTP( ...

  6. 关于GROUP BY和聚合函数

    可以这样去理解group by和聚合函数 转自 http://www.cnblogs.com/wiseblog/articles/4475936.html 写在前面的话:用了好久group by,今天 ...

  7. C语言通过匿名管道实现反弹式CMDShell

    #pragma comment(lib,"ws2_32.lib") #ifdef _MSC_VER #pragma comment( linker, "/subsyste ...

  8. 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

    一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 ...

  9. Tools - 文本编辑器Notepad++

    00 - NotePad++ 官网 01 - Notepad++修改主题 依次点击设置---语言格式设置---选择主题,在显示界面中修改相关设置(背景色.前景色.字体等). 02 - Notepad+ ...

  10. POJ 2470

    #include<iostream> #include<stdio.h> #include<vector> using namespace std; int mai ...