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;
mongdb基本操作和更新操作的更多相关文章
- 《mongoDB》基本操作-创建/更新/删除文档
一:基本操作 - db; 当前选择的集合(等于数据库名) > db demo - use db_name; 选择你要操作的集合 > use demo switched to db dem ...
- Go语言学习教程:xorm表基本操作及高级操作
在上节内容中,我们介绍了xorm框架表结构的映射规则和表结构的操作.本节课,继续来深入学习表结构基本操作和高级查询的相关功能. 表结构基本操作 对表结构的操作最常见的操作是查询和统计相关的方法,我们首 ...
- python学习9—文件基本操作与高级操作
python学习9—文件基本操作与高级操作 1. 文件基本操作 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并 ...
- MongoDB 文档的更新操作
在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...
- 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理
由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的 ...
- java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0
日常开发中,做更新操作的时候的处理方法为:当这个字段有值则更新,没有值就不更新,在mybatis的xml中表现为: <!-- 修改记录,只修改只不为空的字段 --> <update ...
- 对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了
原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: ...
- Java配置文件Properties的读取、写入与更新操作
/** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...
- 对Java配置文件Properties的读取、写入与更新操作
http://breezylee.iteye.com/blog/1340868 对Java配置文件Properties的读取.写入与更新操作 博客分类: javase properties 对Jav ...
随机推荐
- WPF---DataGrid设置列的百分比宽度 & 列值显示格式化
<DataGrid Height="Auto" Width="Auto"> <DataGrid.Columns> <DataGri ...
- .net图表之ECharts随笔01-最简单的使用步骤
找了几种绘制图表的办法,后面选定了ECharts.下载链接如下,好像不同的ECharts有不同的用法,要下对. https://gitee.com/Tuky/SomeWebFrame/tree/mas ...
- adb shell pm list packages的用法
abd shell pm list packages ####查看当前连接设备或者虚拟机的所有包 adb shell pm list packages -d #####只输出禁用的包. ...
- python 通过pytz模块进行时区的转换,获取指定时区的时间
import pytz import time import datetime print(pytz.country_timezones('cn')) # 查询中国所拥有的时区 print(pytz. ...
- skynet 源码阅读笔记 bootstrap.lua
最近几周粗略看了 skynet 代码的 C 部分.遇到很多知识点以前只是知道,但并不十分了解,所以这是一个学习的过程. 从 main 函数开始,闷头一阵看下来,着实蛋疼. 当看了 skynet_mq. ...
- webstorm “Unterminated statement”
使用webstorm的时候,写console.log,或者一些其他语句的时候 偶尔会出现这种提示,不是报错,就是看着别扭,应该是写法规范问题. 解决办法: 在下面空一行就行了
- pythonweb框架Flask学习笔记05-简单登陆
源代码从下链接引用:https://www.cnblogs.com/felixwang2/p/9261493.html 我使用的是python3.6 在运行代码的时候遇到了以下问题 session[' ...
- 使用命令行工具npm新创建一个vue项目
使用vue开发项目的前期工作可以参考前面写的: Vue环境搭建及node安装过程整理 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的 ...
- redis安装(linux)
redis安装 1. 安装tcl # cd /usr/local # wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz # t ...
- (转)explain、db2exfmt 命令的使用:文本输出执行计划
原文:http://blog.51cto.com/freebile/1068610 db2有图形执行计划显示工具,如果没有图形环境,如unix主机,可以生成文本的文件来显示执行计划1.如果第一次执行, ...