Mongodb---操作备忘
mysql/mongodb对比
CREATE TABLE USERS (a Number, b Number)
|
|
INSERT INTO USERS VALUES(1,1)
|
$db->users->insert(array("a" => 1, "b" => 1));
|
SELECT a,b FROM users
|
$db->users->find(array(), array("a" => 1, "b" => 1));
|
SELECT * FROM users WHERE age=33
|
$db->users->find(array("age" => 33));
|
SELECT a,b FROM users WHERE age=33
|
$db->users->find(array("age" => 33), array("a" => 1, "b" => 1));
|
SELECT a,b FROM users WHERE age=33
|
$db->users->find(array("age" => 33), array("a" => 1, "b" => 1));
|
SELECT a,b FROM users WHERE age=33 ORDER BY name
|
$db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1));
|
SELECT * FROM users WHERE age>33
|
$db->users->find(array("age" => array('$gt' => 33)));
|
SELECT * FROM users WHERE age<33
|
$db->users->find(array("age" => array('$lt' => 33)));
|
SELECT * FROM users WHERE name LIKE "%Joe%"
|
$db->users->find(array("name" => new MongoRegex("/Joe/")));
|
SELECT * FROM users WHERE name LIKE "Joe%"
|
$db->users->find(array("name" => new MongoRegex("/^Joe/")));
|
SELECT * FROM users WHERE age>33 AND age<=40
|
$db->users->find(array("age" => array('$gt' => 33, '$lte' => 40)));
|
SELECT * FROM users ORDER BY name DESC
|
$db->users->find()->sort(array("name" => -1));
|
CREATE INDEX myindexname ON users(name)
|
$db->users->ensureIndex(array("name" => 1));
|
CREATE INDEX myindexname ON users(name,ts DESC)
|
$db->users->ensureIndex(array("name" => 1, "ts" => -1));
|
SELECT * FROM users WHERE a=1 and b='q'
|
$db->users->find(array("a" => 1, "b" => "q"));
|
SELECT * FROM users LIMIT 10 SKIP 20
|
$db->users->find()->limit(10)->skip(20);
|
SELECT * FROM users WHERE a=1 or b=2
|
$db->users->find(array('$or' => array(array("a" => 1), array("b" => 2))));
|
SELECT * FROM users LIMIT 1
|
$db->users->find()->limit(1);
|
EXPLAIN SELECT * FROM users WHERE z=3
|
$db->users->find(array("z" => 3))->explain()
|
SELECT DISTINCT last_name FROM users
|
$db->command(array("distinct" => "users", "key" => "last_name"));
|
SELECT COUNT(*y) FROM users
|
$db->users->count();
|
SELECT COUNT(*y) FROM users where AGE > 30
|
$db->users->find(array("age" => array('$gt' => 30)))->count();
|
SELECT COUNT(AGE) from users
|
$db->users->find(array("age" => array('$exists' => true)))->count();
|
UPDATE users SET a=1 WHERE b='q'
|
$db->users->update(array("b" => "q"), array('$set' => array("a" => 1)));
|
UPDATE users SET a=a+2 WHERE b='q'
|
$db->users->update(array("b" => "q"), array('$inc => array("a" => 2)));
|
DELETE FROM users WHERE z="abc"
|
$db->users->remove(array("z" => "abc"));
|
sc.exe create MongoDB30 binPath= "d:\mongodb30\bin\mongod.exe -auth --logpath D:\mongodb\log\MongoDB.log --logappend --dbpath d:\mongodb\data --service " DisplayName= "MongoDB30" start= "auto"
db.test.find({"name":"joe"})
//不区分大小写的查询
db.test.find({"name":{"$regex":"WILLIAM","$options":"i"}})
db.test.find({"name":"joe"}).limit(20)
db.test.find({"name":"joe"}).limit(20).skip(20)
//select * from test where name like '%william%' 不含有
- db.test.find({"name":/.*william.*/i})
- //不含有
- db.test.find({"name":{$not:/.*william.*/i}})
db.test.ensureIndex({"name":1})
db.test.update({},{$unset:{"email":""}},{multi:true})
db.test.getIndexes()
db.test.renameCollection("newtablename")
mongoexport -d dbname -c tablename -u test -p -o "c:/db.json"
mongoexport -d dbname -c tablename -u test -p test -f "fieldname" -csv -o "c:/db.csv"
mongoimport -d test -c news -u test -p password "c:/db.json"
db.test.find({"name":"joe","atta.b":{$exists:true}}).count()
db.test.find({"name":"joe","atta.b":"bbb"}
db.test.update({"name":"william"},{"$pull":{"email":"aa@qq.com"}})
db.test.update({"sn" : "1","stock.fnfp.pn":"aa"} , {$push : { "stock.$.fnfp": {"price":"555"}}})
db.test.update({"name":"joe"},{$push:{"atta":{"d":"ddd"}}})
db.test.update({"name":"joe"},{$set:{"email":"a.163.com"}})
db.test.find({name: {$type: 2}})
db.test.find({age: {$type: 16}})
db.users.find({name: /^b.*/i})
db.users.find({age: {$gt: 18}}) db.users.find({$where: "this.age > 18"}) db.users.find("this.age > 18") f = function() {return this.age > 18} db.users.find(f)
db.users.find().limit(3).forEach(function(user) {print('my age is ' + user.age)})
结果
db.news.find().forEach(function(x){db.news_bak.insert(x)})
db.currentOp()
db.killOp(opid)
db.serverStatus()
db.stats()
db.collection.stats()
db.collection.dataSize()
db.collection.totalIndexSize()
db.changeUserPassword("reporting", "SOh3TbYhxuLiW8ypJPxmt1oOfL")
{ "name":"joe" "email": [ "aaa@163.com", {"qqemail": "aa@qq.com"} ] } db.test.update({"name":"joe"},{$pull:{"email":"aaa@163.com"}})
或者:
db.test.update({"name":"joe"},{$pull:{"email":{"qqemail":"aa@qq.com"}}}) upsert db.post.update({count:100},{"$inc":{count:10}},true)
在找不到count=100这条记录的时候,自动插入一条count=100,然后再加10,最后得到一条 count=110的记录
mongodump -h 127.0.0.1 -d dbname -u username -p -o d:/dbname.bak
mongorestore -h 127.0.0.1 -d dbname -u username -p password dbname.bak/dbname
db.test.find() { "_id":ObjectId("52428f5d5ab08c5e801f7209"), "price":[ {"digk":{"nt1":1,"nt2":2}}, {"avn":{"nt1":22,"nt2":23}} ], "sn":1 }

db.test.update({"sn":1},{$pop:{"price":0}})
移除price数组下的第0项
db.test.update({"sn":1},{$pull:{"price":{"avn":{"nt1":22,"nt2":23}}}})
缺陷必须知道price中的avn的
var cursor=db.test.find(); while(cursor.hasNext()){ var y=cursor.next(); for(var i=0;i<y.price.length;i++){ delete y.price[i].avn; } db.test.save(y); }
var cursor=db.test.find(); var i = 1; while(cursor.hasNext()){ var y=cursor.next(); var _id = y._id; db.test.update({"_id":_id},{$set:{"sn":i}}); i++; }
db.test.save({"sn":1, "contact": { "China":[ {"city":"beijing","email":"a@163.com","tel":"010-6666"}, {"city":"shanghai","email":"b@263.com","tel":"021-8888"}, {"city":"shenzhen","email":"c@sohu.com","tel":"0755-9999"} ], "United-States":[ {"city":"Newyork","email":"a@163.com","tel":"010-6666"}, {"city":"Washington","email":"a@163.com","tel":"010-6666"} ] } }) db.test.save({"sn":2, "contact": { "Japan":[ {"city":"tokyo","email":"a@163.com","tel":"010-6666"}, {"city":"Osaka","email":"b@263.com","tel":"021-8888"}, {"city":"Hokkaido","email":"c@sohu.com","tel":"0755-9999"} ], "Canada":[ {"city":"Vancouver","email":"a@163.com","tel":"010-6666"}, {"city":"Ottawa","email":"a@163.com","tel":"010-6666"} ] } })
var cursor = db.test.find({"sn":1}); while(cursor.hasNext()){ var y = cursor.next(); for(var i =0;i < y.contact.China.length;i++){ if(y.contact.China[i].city == 'shenzhen'){ delete y.contact.China[i]; } } db.test.save(y); }
db.test.update({"sn":1,"contact.China.city":"beijing"},{$set:{"contact.China.$.city":"guangzhou"}})
db.usersinfo.renameCollection("users")
use admin db.createRole({role:'sysadmin',roles:[],privileges:[{resource:{anyResource:true},actions:'anyAction']}]})
use test db.grantRolesToUser("test",[{role:'sysadmin',db:'admin'}]) key:[{'id':123,'value':11},{'id':124,'value':12}]
查询匹配key里id与value皆匹配:find({'key':{$elemMatch:{"id":123,"value":12}}})可以做到返回不出结果。
Mongodb---操作备忘的更多相关文章
- Axure常用操作备忘
目录 前言 技巧 边框重合 复制对象文本居中 复制粘贴样式 文本自适应 给图形添加连接点 导出图片无空白 前言 下面列出Axure画图过程中曾经遇到过的问题,备忘一下,避免别人也走弯路,法布施一下~ ...
- mongo日常操作备忘
修改 普通修改 插入数据: db.students.insert({ "name":"swrd", "age":32, "grad ...
- DOS命令批量重命名文件配合Excel 操作备忘
批量取得文件夹下文件名 有时候文件夹下有好多图片什么的,文件名称不是统一的格式,想统一一下,于是google找到以下方法,进入要操作的目录,按住shift键的同时,单击鼠标右键,你会看到在此处打开命令 ...
- JavaScript 数组操作备忘
数组的定义: 方法1. var mycars=new Array()mycars[0]="Saab"mycars[1]="Volvo"mycars[2]=&qu ...
- docker常用操作备忘
一.docker安装 参考资料:阿里云镜像加速1. 安装/升级Docker客户端 curl -fsSL https://get.docker.com | bash -s docker --mirror ...
- MongoDB 基本命令备忘
使用admin数据库: use admin 显示数据库: show dbs 创建用户,并制定该用户的角色: db.createUser({user: "root",pwd:&quo ...
- mongo操作备忘
#查看collection内 某个字段条目数 db.dictionary_system.find({"name":"xxx"}).count() #清空某个co ...
- QT常规控件操作备忘
QLabel设置边框和颜色: label->setFrameShape (QFrame::Box); label->setStyleSheet("border: 1px soli ...
- eclipse如何修改dynamic web module version;——eclipse操作备忘
1.eclipse如何修改dynamic web module version 一.修改工程属性: 右键eclipse的工程,选择属性,再选择Project Facets里面中选择Dynamic We ...
- iscsi 操作备忘
#查找iscsi节点 iscsiadm -m discovery -t st -p 192.168.20.225 #列出可用节点 iscsiadm -m node -T iqn.com.exapmle ...
随机推荐
- 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目
分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...
- Android特效专辑(十一)——仿水波纹流量球进度条控制器,实现高端大气的主流特效
Android特效专辑(十一)--仿水波纹流球进度条控制器,实现高端大气的主流特效 今天看到一个效果挺不错的,就模仿了下来,加上了一些自己想要的效果,感觉还不错的样子,所以就分享出来了,话不多说,上图 ...
- Erlang Rebar 使用指南之一:入门篇
Erlang Rebar 使用指南之一:入门篇 全文目录: https://github.com/rebar/rebar/wiki 本章原文: https://github.com/rebar/reb ...
- php引用传值详解
php的引用(就是在变量或者函数 .对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存 ...
- ES6之let命令
ES6新增了let命令,用来声明变量.它的用法类似于var. let和var声明变量的区别: 1.let声明的变量,只在let命令所在的代码块内有效,出了这个块级作用域就不起作用 先看一个例子: { ...
- miniui几个常用知识点汇总
1.在表格中去除系统自带的序列号,请看代码: function allAndBrief(id) { if(id==1){ grid.set({ columns: [ { type: "ind ...
- 交换机设置IP
二成交换机所有端口在默认情况下都是属于vlan1的 代表整个交换机 你只需要设置vlan1的ip地址就行了 进入交换机配置界面后 命令如下:enableconfigure terminalinterf ...
- 单链表反转(Singly Linked Lists in Java)
单链表反转(Singly Linked Lists in Java) 博客分类: 数据结构及算法 package dsa.linkedlist; public class Node<E> ...
- JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图
1 学习计划 1.Quartz概述 n Quartz介绍和下载 n 入门案例 n Quartz执行流程 n cron表达式 2.在BOS项目中使用Quartz创建定时任务 3.在BOS项目中使用Jav ...
- java之Spring(IOC)注解装配Bean详解
在这里我们要详细说明一下利用Annotation-注解来装配Bean. 因为如果你学会了注解,你就再也不愿意去手动配置xml文件了,下面就看看Annotation的魅力所在吧. 先来看看之前的bean ...