[ mongoDB ] - mongoDB的基本操作

mongoDB的基本操作

强烈推荐参考官方用户手册:

http://www.mongodb.org/display/DOCS

 

1)插入(insert)

插入的value是json对象,以下示例循环添加了10个用户信息,字段可以是字符串、数值、对象、数组等。

通过VUE查看:

 

2)查询(find)

2.1——查询全部内容:

db.user.find({}) 

我们可以称{}中的内容为选择器,这里选择器为空,可以省略,指获取collection中所有内容。

 

2.2——字段查询

db.user.find({name:'fox1'})

 

2.3——排序(sorting)

db.user.find({}).sort({age:1})

1代表升序,-1代表降序

 

2.4——skip and limit(可以用于分页)

db.user.find({ }).skip(5).limit(5).sort({ "age" : 1 });

例如,对user表进行分页,写一个js函数提供分页功能。

function pagination(pageNumber , nPerPage){
db.user.find().skip((pageNumber-1)*nPerPage).limit(nPerPage).forEach(
function(user){print(user.name+"<p>")});}

 

2.5——游标

var cur=db.user.find();

cur.forEach(function(x){ print(tojson(x))});

具体参考:

http://www.mongodb.org/display/DOCS/Querying

 

 

高级查询

参考:http://www.mongodb.org/display/DOCS/Advanced+Queries

2.6——条件运算符

#<,<=,>,>=

#查找18<age<28的用户

db.user.find({age:{$gt:18,$lt:28}})

 

#$all,全包含

#查找邮箱在'fox@126.com','hg0@fox.com'范围内的用户

db.user.find({email:{$all:['fox@126.com','hg0@fox.com']}})

 

#$exists,表示字段是否存在

#查找存在字段a的用户

db.user.find({a:{$exists:true}})

 

#$mod,取模

#找到本命年的用户

db.user.find({age:{$mod:[12,0]}})

等价于:

db.user.find("this.age % 12 == 0")

 

#$ne,不等于

#获取age不等于10的用户

db.user.find({age:{$ne:10}})

 

#$in,$nin

db.user.find({age:{$in:[10,12,14]}})

db.user.find({age:{$nin:[10,12,14]}})

 

#$nor,$or,$and 关系运算符

#查找age<15或者age>25的用户,并按照age排序

db.user.find({$or:[{age:{$lt:15}},{age:{$gt:25}}]}).sort({age:1})

 

#$size

#查找有两个邮箱地址的用户

db.user.find({email:{$size:2}})

 

#$type

#根据字段类型进行查找

字段类型对应关系

Type NameType Number
Double1
String2
Object3
Array4
Binary data5
Object id7
Boolean8
Date9
Null10
Regular expression11
JavaScript code13
Symbol14
JavaScript code with scope15
32-bit integer16
Timestamp17
64-bit integer18
Min key255
Max key127

 

2.7——正则查询

 

 

2.8——数据中数据的查询

#可以直接对数组中的某一个元素进行检索

#查询邮箱包含hg6@fox.com的用户

db.user.find({email:'hg6@fox.com'})

 

#elemMatch

#数组元素中应用数学表达式(match expression)

 

2.9——embedded Object(内置对象属性查询)

#查询在长沙的用户

db.user.find({'address.city':'changsha'})

注意:此时的address.city需要引号(整体化)

 

2.10——非

#$not

#查找大于等于15岁的用户

db.user.find({age:{$not:{$lt:15}}})

注意:

db.user.find({$not:{age:{$gt:15}}})不正确!!!

 

2.11——js表达式

#查找age大于25的用户

a) db.user.find({age:{$gt:25}})

b) db.user.find({$where:"this.age > 25"})

c) db.user.find("this.age > 25")

d) f = function(){return this.age>25;}

    db.user.find(f)

写复杂条件,这个$where比较方便强大了!

 

3)更新(update)

3.1——更新语法:db.collection.update( criteriaobjNewupsertmulti )

criteria:数据范围,需要修改数据的查询条件

objNew:更新数据

upsert:如果没有查询到则新增,但只新增一条数据

multi :默认只更新第一条数据

 

3.2——#$inc

#必须是数值型字段

#给fox1加一岁

db.user.update({name:'fox1'},{$inc:{age:1}})

 

3.3——#$set

#给fox1变成10岁

db.user.update({name:'fox1'},{$set:{age:10}})

 

3.4——#$unset

#删除某个字段

 

3.5——#针对数组的操作:$push,$pushAll,$addToset,$each,$pop,$pull,$pullAll

#给fox1新增一个邮箱($push)

db.user.update({name:'fox1'},{$push:{email:'fire009@126.com'}})

#$pop:{field:1}删除最后一个元素,$pop:{field:-1}删除第一个元素。

#$pull删除数组中指定条件的数据。

#使用$进行位置上的操作(指定数组上某个元素)

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号量保护之位带操作

大家好&#xff0c;上篇文章写的一个中断操作变量的问题&#xff0c;鱼鹰帮忙回复了&#xff0c;大家可以再看看这篇文章。好友让我看这段代码CM3位带操作如果存储器系统支持“锁定传送”&#xff08; lockedtransfers&#xff09;&#xff0c;或者总线上只有一个主机&#xff…

CCScene切换的所有特效(28种)以及设置屏幕横竖屏!

CCScene 对于使用cocos2d的童鞋肯定很熟悉&#xff0c;那么在使用 CCScene *s [CCScenenode];[s addChild: [restartAction() node]];[[CCDirectorsharedDirector]replaceScene:s]; 对scene进行场景&#xff08;CCLayout&#xff09;进行切换时&#xff0c;cocos2d提供了一…

关于MySqlConnection的一个特殊异常

最近给一个客户做一个项目&#xff0c;其中要与另外一个系统进行数据交换&#xff0c;而那个系统使用的是MySql&#xff0c;因此&#xff0c;从网上下载了一个MySql Connector&#xff0c;由于以前没有用过MySql&#xff0c;而且这个MySql服务器位于互联网上&#xff0c;因此&a…

文档设置及使用

原文链接&#xff1a;http://stynzf.blogbus.com/logs/15944928.html在上一篇文档&#xff08;《微软文档管理解决方案2007》之一&#xff1a;安装部署&#xff09;中&#xff0c;讲述了如何安装部署“文档管理解决方案” 这次我们通过将该子网站作为“Windows中文站”的一个文…

SSL和HTTPS

SSL说明&#xff1a; 1&#xff09;简介 SSL (Secure Socket Layer)为Netscape所研发&#xff0c;用以保障在Internet上数据传输之安全&#xff0c;利用数据加密(Encryption)技术&#xff0c;可确保数据在网络上之传输过程中不会被截取。它已被广泛地用于Web浏览器与服务器之间…

N32替换STM32,这些细节别忽略!

前言目前大形势影响&#xff0c;芯片价格日益上涨&#xff0c;采购周期变长&#xff0c;导致国产芯片替代进口芯片成为大趋势&#xff0c;该文章记录了使用国民技术的N32替换STM32的操作流程。话不多说&#xff0c;上步骤。一、工程配置1.安装硬件库硬件库为厂家提供的资料&…

五分钟读懂UML类图

平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道。实际上&#xff0c;UML类图中最常用到的元素五分钟就能掌握&#xff0c;下面赶紧来一起认识一下它吧&#xff1a; 一、类的属性的表示方式 在UML类图中&#xff0c;类使用包含类名、属性(field) 和方法(meth…

只会纯硬件,让我有点慌

纯硬件产品在市面上现在很少了&#xff0c;大多都带有单片机&#xff0c;比如智能路灯&#xff0c;智能门禁&#xff0c;智能家居等等。为了提高竞争力&#xff0c;单片机相关知识的学习必不可少。给大家推荐一本龙顺宇老师的新书《深入浅出STC8增强型51单片机进阶攻略》。&…

NSLog的常用格式说明小释

NSLog的格式如下所示: % 对象%d, %i整数%u 无符整形%f 浮点/双字 %.nf 带有n小数点的浮点/双字%x, %X二进制整数%o 八进制整数%zu size_t %p 指针%e 浮点/双字 (科学计算) %g 浮点/双字%s C字符串%.*s Pascal字符串%c 字符%C unichar %lld 64位长整数(long long) %llu 无符64位…

感觉自己好傻

前几天&#xff0c;一个微信微信朋友找我聊天。他在一家公司工作了4年多&#xff0c;但是这四年基本没有什么技术上的提升&#xff0c;做的事情也一些打杂的事情&#xff0c;核心技术在芯片原厂&#xff0c;软件SDK也是别人写好的&#xff0c;他能做的就是对接客户&#xff0c;…

图形处理单元(GPU)的演进

CPU 和 GPU好久没有更新了&#xff0c;最近在阅读 CUDA 相关的一些论文&#xff0c;因为都是碎片化阅读&#xff0c;容易导致读过后&#xff0c;可能过一段时间又忘记掉&#xff0c;所以决定抽时间翻译翻译阅读的论文&#xff0c;一方面增强自己记忆&#xff0c;一方面与大家共…

TCP通信过程大讨论

转载地址&#xff1a;http://www.cricode.com/3568.html 本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤&#xff1a;建立TCP连接通道&#xff0c;传输数据&#xff0c;断开TCP连接通道。如图1所示&#xff0c;给出了TCP通信过程的示意图。 图1 TCP 三次握手…

Android 自定义View以及ValueAnimator学习

2019独角兽企业重金招聘Python工程师标准>>> 看了ApiDemo里面的BoucingBall&#xff0c;觉得挺好的&#xff0c;所以特地学习了一下&#xff0c;将代码注释后贴到这里&#xff0c;以便以后学习。 class BallView extends View implements ValueAnimator.AnimatorUpd…

固件工程师到底是干什么?

大家好&#xff0c;我是写代码的篮球球痴可能大家还不知道&#xff0c;我是一个写固件的工程师&#xff0c;今天和一个微信朋友聊天&#xff0c;他问我工作几年了&#xff0c;我说我工作10年了&#xff0c;而且这10年我都一直在从事嵌入式固件相关的工作。他猛的觉得很不可思议…

如何实现按键的短按、长按检测?

在电子产品中经常用到按键&#xff0c;尤其是经常需要MCU判断短按和长按这两种动作&#xff0c;本篇我们来专门聊下这个话题。只谈理论太无聊&#xff0c;我们还是结合着实际应用来说明。之前写过一篇关于《CH573第一篇&#xff1a;实现自拍杆蓝牙遥控器1》的文章&#xff0c;例…

博士也会毕业吗?

怪我读书少&#xff0c;一直以来我都认为博士是一种很神奇的物种&#xff0c;他们能学会很多我们学不会的东西&#xff0c;那些奇奇怪怪的数学题&#xff0c;还有那种要背上几天的思想政治课文&#xff0c;以及要听懂那种像鸟儿一样呼唤的讲课&#xff0c;所以&#xff0c;我一…

国外出差见闻之印度

前段时间到印度的马德拉斯市出差了3个月(4月到6月)&#xff0c;今天终于有时间将自己的出差心得和见闻记录下来&#xff0c;可能以后就会忘记。下午16:00时在深圳坐车到香港机场&#xff0c;上车没多久会让填一个入境香港的单子&#xff0c;然后是过海关&#xff0c;过海关时会…

雷军的演讲以及产品发布

8月11号是小米的发布会&#xff0c;还有雷军的年度演讲。因为工作冲突我没看直播&#xff0c;晚上回来看了公众号文章和知乎上的内容讨论&#xff0c;也看了发布的新产品。雷军那个年代能够做上程序员一定是非常牛逼的人&#xff0c;而雷军是这些牛逼人的公司总经理&#xff0c…

轻松理解UML用例图时序图类图的教程

摘自https://zhuanlan.zhihu.com/p/29874146 写在前面 当你老大扔给你这样的图&#xff0c;或者你需要完成某些功能而去看文档的时候发现以下类似这样的图会不会不&#xff08;一&#xff09;知&#xff08;脸&#xff09;所&#xff08;懵&#xff09;措&#xff08;逼&#x…

[Winodows Phone 7控件详解]控件拾遗

1.Panorama控件和Pivot控件前面讲过&#xff0c;没有必要再重复一遍了。参见我的博文&#xff1a;http://www.cnblogs.com/DebugLZQ/archive/2012/03/19/2406284.html 2.DeepZoom DeepZoom 是silverlight的特色功能之一&#xff0c;也同样被加到了windows phone 7中来。这个功能…