mongo 增删改查
1. use foobar
2. show dbs
3. show collections
4. db.system.indexes.find()
5. db.persons.find()
6. db.persons.insert({name:"extjs4.0"})
7. db.persons.findOne()
8. db.persons.update({name:"extjs4.0"},{$set:{name:"extjs4.1"}})
强硬的文档替换工作:
db.text.update({name:"yfc"},{age:29})
9. var p=db.persons.findOne();
db.persons.update(p,{name:"uspcat"})
10.db.persons.update({age:1},{$set:{age:2}});
如果有两个age为一的话,我们只能修改一个。
11.db.persons.remove({age:2});
12.db.persons.insert({_id:"001",name:"yun"})//自己主动插入_id.
13.db.persons.insert([{name:"34"},{name:"234"}])
这样子插入的话,结果"0":{"name":"34","1":{"name","234"}}
14. 批量插入,
for(var i=0;i<10;i++){
db.persons.insert({name:i})
}
15. save与insert的区别在于,在相同id的情况下,insert回报错。
16.db.persons.remove()
17.db.persons.remove({_id:1})
18.插入或者更新
db.persons.update({查询器},{修改器},true)
19.实现批量修改
db.persons.update({name:3},{$set:{name:"333"}},false,true)
20.
$set 用来指定一个键值对,如果存在键就进行修改,不存在则进行添加。
$inc 只是使用与数字类型,他可以为指定的键对应的数字类型的数值进行加减操作。
$unset 他的用法很简单,就是删除指定的键。
$push 如果指定的键是数组增追加新的数值,如果不存在指定的键则创建数组类型的键值对。
$pushAll 用法和$push相似,可以批量添加数组。
$addToSet 目标数组存在此项则不操作,不存在此项则加进去。
$pop 从指定数组删除一个值,1删除最后一个数值,-1删除第一个数值。
$pull 删除一个被指定的数值。
$pullAll一次性删除多个指定的数值。
$ db.text.update({"books.type":"JS"},{$set:{"books.$.author":"USPCAT"}})
===================================================================
find的用法:
21. db.persons.find({},{name:1,age:1,country:1,_id:0});
22.$lt < $lte <= $gt > $gte >= $ne !=
23. 查询出年龄在25到27岁之间的学生 db.persons.find({age: {$gte:25,$lte:27},{_id:0,age:1})
24.查询出所有不是韩国籍的学生的数学成绩db.persons.find({country:{$ne:” Korea”}},{_id:0,m:1})
============================================================
包含或不包含$in 或$nin
25.查询国籍是中国或美国的学生信息
db.persons.find({country:{$in:[“USA”,“China”]}})
26.查询国籍不是中国或美国的学生信息
db.persons.find({country:{$nin:[“USA”,“China”]}})
==============================================================
or查询$or
27.查询语文成绩大于85或者英语大于90的学生信息
db.persons.find({$or:[{$gte:85}},{e:{$gte:90}}],{_id:0,c:1,e:1})
28.把中国国籍的学生上增加新的键sex
db.person.update({country:”China”},{$set:{sex:”m”}})
29.查询出sex等于null的学生
db.persons.find({sex:{$in:[null]}},{country:1})
==============================================================
30.查询出名字中存在”li”的学生的信息db.persons.find({name:/li/i},{_id:0,name:1})
31.$not可以用到任何地方进行取反操作
查询出名字中不存在”li”的学生的信息
db.persons.find({name:{$not:/li/i}},{_id:0,name:1})
$not和$nin的区别是$not可以用在任何地方儿$nin是用到集合上的
32.数组查询$all和index应用
2.8查询喜欢看MONGOD和JS的学生
db.persons.find({books:{$all:[“MONGOBD”,”JS”]}},{books:1,_id:0})
2.9查询第二本书是JAVA的学习信息
db.persons.find({“books.1”:”JAVA”})
db.persons.find({name:{$not:/li/i}},{_id:0,name:1})
33. .查询指定长度数组$size它不能与比较查询符一起使用(这是弊端)
2.8查询出喜欢的书籍数量是4本的学生
db.persons.find({books:{$size:4}},{_id:0,books:1})
34.查询出喜欢的书籍数量大于3本的学生
1.增加字段size
db.persons.update({},{$set:{size:4}},false, true)
2.改变书籍的更新方式,每次增加书籍的时候size增加1
db.persons.update({查询器},{$push:{books:”ORACLE”},$inc:{size:1}})
3.利用$gt查询
db.persons.find({size:{$gt:3}})
35.利用shell查询出Jim喜欢看的书的数量
var persons = db.persons.find({name:"jim"})
while(persons.hasNext()){
obj = persons.next();
print(obj.books.length)
}
36. 1.mongodb 是NOSQL数据库但是他在文档查询上还是很强大的
2.查询符基本是用到花括号里面的更新符基本是在外面
3.shell是个彻彻底底的JS引擎,但是一些特殊的操作要靠他的
各个驱动包来成(JAVA,NODE.JS)
==================================================================
1.注意在json中name:"3" 与"name":"3"是一样的,但是name:"3"与name:3就不同了。
他不允许后边一个有引号另一个没哟引号。
2.mongo没有事务,本来就不完事务的,事务是原子级的,效率低。
3.couchDB里号称是有事务性的mongodb
因为没用过,所以,你们懂的
***************************************************************************
***************************************************************************
对update 的set的使用
如果没有使用set是这个结果:
如果使用set是这个结果:
********************************************************
********************************************************
1.db.stats();
2.db.persons.help()
3.db-text这个集合不能通过db.[],只能db.getCollection()
4.
1.插入文档 db.[documentName].insert({})
2.批量插入文档 shell 这样执行是错误的 db.[documentName].insert([{},{},{},……..]) shell 不支持批量插入 想完成批量插入可以用mongo的应用驱动或是shell的for循环
3.Save操作 save操作和insert操作区别在于当遇到_id相同的情况下 save完成保存操作 insert则会报错
正确的批量插入数据的方法:
insert和save方法
1.删除列表中所有数据 db.[documentName].remove() 集合的本身和索引不会别删除
2.根据条件删除 db.[documentName].remove({}) 删除集合text中name等于uspcat的纪录 db.text.remove({name:”uspcat”})
3.小技巧 如果你想清楚一个数据量十分庞大的集合 直接删除该集合并且重新建立索引的办法 比直接用remove的效率和高很多。使用drop方法。
*************************
insert如果输入的'_id'相同的话,是不能插入的。
如果update含有第三个参数为true的话,那么没有表示insertorupdate,没有的话插入。
update只更新最第一个相似的
批量更新:
******************************************
******************************************
$set的用法:如果有这个属性就更改,如果没有就添加。
inc
unset
push
pushAll
addToSet
使用修改器来完成局部更新操作
数组定位器的用法:
$修改器是放在外层的,而$查询器是放在内层。
6. $addToSet与$each结合完成批量数组更新 db.text.update({_id:1000},{$addToSet:{books:{$each:[“JS”,”DB”]}}}) $each会循环后面的数组把每一个数值进行$addToSet操作
7.存在分配与查询效率 当document被创建的时候DB为其分配没存和预留内存当修改操作 不超过预留内层的时候则速度非常快反而超过了就要分配新的内存 则会消耗时间
8. runCommand函数和findAndModify函数 runCommand可以执行mongoDB中的特殊函数 findAndModify就是特殊函数之一他的用于是返回update或remove后的文档 runCommand({“findAndModify”:”processes”, query:{查询器}, sort{排序}, new:true update:{更新器}, remove:true }).value ps = db.runCommand({ "findAndModify":"persons", "query":{"name":"text"}, "update":{"$set":{"email":"1221"}}, "new":true }).value do_something(ps) http://www.cppblog.com/byc/archive/2011/07/15/151063.aspx
9. mongo的查询
第一个对象{}表示查询所有的,id:0 表示不显示id,其余的后边都是1表示该属性显示。
10.
mongo 增删改查的更多相关文章
- mongo增删改查封装(C#)
Framework版本:.Net Framework 4 ConnectionUtil源码参见:https://www.cnblogs.com/threadj/p/10536273.html usin ...
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- MongoDB基础入门002--基本操作,增删改查
一.这里只是演示最基本的操作,更多的信息可以去官网.https://docs.mongodb.com/manual 打开一个cmd,输入mongo命令打开shell,其实这个shell就是mongod ...
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- MongoDB 3.0.6 安装 增删改查
下载 安装包MSI http://yunpan.cn/cmhHdTPkXZRM2 访问密码 9b6c 上边提供的是 MongoDB 3.0.6 64Bit 的安装包 安装 如果不想直接安装在C盘.. ...
- Mongodb c#增删改查
写在前面 最近项目需要,就研究了下mongodb,也是为了快速上手,就自己弄了一个简单的例子,这里记录一下. Mongodb 传统的关系数据库一般由数据库(database).表(table).记录( ...
- mongoDB4--mongoDB的增删改查
MongoDb基本操作之增删改查我们知道传统关系型数据库的最常用操作就是"增加/删除/修改/查询",也就是传说中的CRUD(create/remove/updte/delete). ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
随机推荐
- [ASP.NET]从Request.Url获取根网址的最简单方法
在拼接绝对路径的网址时,经常需要从Request.Url中获取根网址(比如http://www.cnblogs.com),然后与相对路径一起拼接为绝对路径. 以前的做法如下: var uri = Re ...
- c# devExpress控件 comboBoxEdit,gridControl1,labelcontrol
一.comboBoxEdit:下拉框 属性 添加项:Properties->items 二.gridControl gridControl与Gridview的区别:前者是容器,后者为视图 2)g ...
- 最近遇到的bug
1. 地图周边快查,按钮点击没反应 子控件超出了父控件 2.图片显示灰色背景,一直去不掉 设置图片背景图片clear cloro 3. 显示隐藏导航栏 下面两个方法效果不同 self ...
- Linux环境下proc的配置c/c++操作数据库简单示例
在虚拟机上装了oracle11g数据库,原本想利用c/c++学习操作数据库.结果感觉摊上了一个大坑.从安装好oracle数据库到配置好proc的编译选项整整花了二天.但让我意识到自己自己几点薄弱:1. ...
- kubernetes实战(五):k8s持久化安装Redis Sentinel
1.PV创建 在nfs或者其他类型后端存储创建pv,首先创建共享目录 [root@nfs ~]# cat /etc/exports /k8s/redis-sentinel/ *(rw,sync,no_ ...
- 【调研与分析】标杆学习、知识管理和竞争情报的关系——From Team
注: 1)红色实线箭头表示可以直接使用:例如竞争情报业务输出产品之一的标杆文档可以直接作为公司标杆学习中外部标杆的资料: 2)蓝色虚线箭头表示转化后使用或者间接利用的关系:例如专题调研可以帮助建立内部 ...
- POJ3233:Matrix Power Series(矩阵快速幂+二分)
http://poj.org/problem?id=3233 题目大意:给定矩阵A,求A + A^2 + A^3 + … + A^k的结果(两个矩阵相加就是对应位置分别相加).输出的数据mod m.k ...
- Ubuntu下navicat过期解决办法
Ubuntu下使用navicat过期.试用期是15天. 可以删除.navicat64/解决.不好的一点就是.需要重新连接数据库,以前的连接记录会被删除 rm -rf ~/.navicat64/
- Java基础知识陷阱(九)
本文发表于本人博客. 今天我来说说关于JAVA多线程知识,有错误请指出.大家都知道JAVA在服务端上处理也有很大优势,很多公司也有在服务器跑JAVA进程,这说明JAVA在处理这个多线程以及并发下也有一 ...
- linux sar命令详解及使用
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...