mongoDB的学习笔记

openkk 13年前
       最近在学习Mogodb,目前只是出于学习阶段,还没有在项目中实战过,记录一下下学习的总结。    <br /> ----start----    <br />    <div>     <div>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">基本概念:</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">1、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">文档 --> 对应关系数据库的行,也就是一条记录。它比关系数据库的行的功能要强大,更像是是某个具体的对象。文档以一种Map的形式展现出来,当然value可以是任意的类型,也可以继续是一个文档(递归的定义)</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">2、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">集合 --> 对应关系数据库的表。但是它又是无模式的,即文档不要求一致。</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">基本操作:</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">1、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">显示数据库</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">show dbs</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">2、创建数据库:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">use yourDateBaseName 这就创建了一个数据库。</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">不过你用show dbs,并不能显示yourDataBaseName,因为这个数据库没有任何操作。所以如果你直接离开,则本数据库会被废除。</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">如果你插入一条记录,此时就可以通过show dbs看到对应的数据库</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">如下:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">record = {"name" : "wang", "age" : 20, "password" : "123456"}</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.yourDateBaseName.yourTableName.insert(record)</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">这时使用show dbs就可以看到你的数据库了</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">3、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">显示数据库</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">show collections。默认的包含system.indexes 表</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">4、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">创建集合:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">因为mongodb中集合是无模式的,不像传统的关系型数据库是需要预先申明表包含哪些字段并且定义字段的属性。虽有无需预先定义。使用的时候直接插入。可以见上面的例子。</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">5、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">删除集合</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.yourDatabaseName.yourCollectionName.drop()</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">6、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">将文档插入集合</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">record = {"name" : "wang", "age" : 20, "password" : "123456"}</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.yourDatabaseName.yourCollectionName.insert(record)</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">7、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">删除集合中的文档</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.yourDatabaseName,yourCollectionName.remove()</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">会清空此集合中的所有文档</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">8、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">文档更新</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Mongo中的更新有两种</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">一种是:用新的文档去替换旧的文档。【就是通过条件先将满足条件的选出来该文档,修改完之后替换旧的文档】,个人不喜欢这种操作,违背了原子性啊。</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">另外一种:采用Mongo的修改器对文档进行修改。</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">修改器列表:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">8.1、“$set”修改器:用了指定一个健的值。如果健不存在,就创建它。</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">   Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")}, {"$set" : {"sex" : "male"}})</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">       “$unset”删除某个健</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">       Example:</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">             db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")}, </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';"> </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{"$unset" : {"sex" : 1}})</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';"> 8.2、“$inc”修改器用了增加已有的健的值,或者在键不存在的时候创建一个健。</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">     db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")}, </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';"> </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{"$inc" : {"age" : 1}}) </span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Tips: $inc 只能用于整数,长整数和双精度浮点数。其他数会导致失败。</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">     8.3、“$push”会向已有的数组末尾加入一个元素,要是没有就会创建一个新的数组。</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">        {$push : {"comments" : "this is my comments"}})</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">     8.4、“$ne”not equal判定器,【判定给定的属性不等于给定值】</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.update({"comments" : {"$ne" : "this is comments"},</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{$push : {"comments" : "your comments"}})</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">     8.5、“$addToSet”在不重复的情况下添加</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{"$addToSet" : {"comments" : "your comments"}})</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">     8.6、“$each”数组遍历修改器</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{"$addToSet" : {"comments" : {"$each" : ["a commnet", "b comment"]}}})</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';"> 8.7、“$pop”修改器,从数组中删除任何一端删除元素</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{$pop : {key : 1}}从数组末尾删除一个元素</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{$pop : {key : -1}}从数组头部删除</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">     8.8、数组定位修改器</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Example:</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.update({"comments.author" : "john"},</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:63pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">{"$set" : {"comments.$.author" : "jim"}})</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">定位到第一个john的第一条评论</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">9、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">特殊的更新or插入 upsert</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Upsert的特点是如果存在就更新,如果不存在就根据update的条件插入一条新的记录</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">10、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">批量更新</span></p>      <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">需要设置update的第四个参数为true,否则默认更新第一个匹配的文档</span></p>      <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">11、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">得到上一条命令的执行结果<br /> </span><span style="font-family:宋体;" class="Apple-style-span">    db.runCommand({getLastError : 1})<br /> <br /> </span>实验室从去年开始接触Nosql,不过那个时候自己不是负责这部分的所以只是介于组会的时候讨论了解。后来去实习,这个东东越来越火了。以至于俺觉得自己也要去学习一下,这些天一直看这方面的东西。最大的感觉就是它组织结构的变化带来的方便,这也是算是肤浅的感觉吧,新手一般都有这样的体验,至于网上一直叫好的速度快(据说比传统的关系型数据库快5倍左右),由于木有实战的体验,目前还木有深刻的认识。前段时间一直在做一个MIS系统,被数据库折腾的却是够呛,数据库设计的人太过考虑各种范式,以至于开发困难很多。在看看mogodb确实给人焕然一新的感觉。呵呵。目前感觉就是这么多,继续记录一下自己的学习的笔记,这部分主要是mogodb的查询操作。mogodb的查询功能确实比标准的sql强大很多,特别是各种修改器和基于js函数的$where查询。<br /> ----start----</p>      <div>       <div style="layout-grid:15.6pt none;">        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">Mongodb的查询操作</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">1、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">查询全部集合</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.post.find() </span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">如果是console的话,默认显示20条记录</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">2、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">返回指定的键</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.post.find({}, {"foo" : 1, "baz" : 1})</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">返回键foo和健baz,同时默认返回_id键的值 </span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">3、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">指定不返回的键</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.post.find({}, {"foo" : 0})</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">返回除foo之外的其他键</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">4、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">判定条件查询</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">a) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$lt” 小于</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">b) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$lte”小于等于</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">c) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$gt”大于</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">d) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$gte”大于等于</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">e) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$ne”不等于</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.find({"age" : {"$gte" : 18, "$lte" : 30}})</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">5、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">其他条件查询</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">a) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$in” :是否在某一个集合的查询</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.find({"age" : {"$in" : [17,18,19]}})</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">b) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$nin”:与in相对应,不处于某个结合的文档</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">c) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$or”:多条件查询</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.user.find({"$or" : [{"age" : 17}, {"age" : 18}]})</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">d) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$not”非的情况下使用。其他条件可以基于它</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">e) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$mod”取模查询</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">f) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$null”可以匹配值为null的字段,同时也能匹配键不存在的文档</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">如果同时要判定键存在,需要加上"$exists" 判定</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">6、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">查询数组</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">a) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">“$all” 通过多个元素匹配数组</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.food.find({"fruit" : {"$all" : ["apple", "oracle"]}})</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">b) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">数组下标匹配</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.food.find({"fruit.2" :  "peach"})</span></p>        <p style="margin-top:0pt;text-indent:-21pt;margin-bottom:0pt;margin-left:42pt;"><span style="font-family:'Times New Roman';font-size:10.5pt;mso-spacerun:'yes';">c) </span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">"$size"数组长度匹配 </span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.food.find("fruit" : {"$size" : 3})</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">7、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">"$slice"指定返回集合的个数</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.posts.find(criteria, {"$silce" : n})</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">n = 10 返回前10条记录</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">n = -10 返回后10条记录</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">n = [23, 10] 返回从23条记录开始的10条记录,感觉应该可以做分页</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">8、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">采用点表示法查询内嵌文档(推荐)</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.find({"name.first" : "Wang", "name.last" : "Hai"})</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">9、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">采用分层的方式查询</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.find({"name" : {"first" : "Wang, "last" : "Hai""}})</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">10、</span><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">$where查询</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">$where查询非常强大,它可以添加js的函数实现高级的查询功能。</span></p>        <p style="margin-top:0pt;margin-bottom:0pt;margin-left:21pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">基本样式如下:</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">db.myMongodb.find({"$where" : function() {}})</span></p>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"><span style="font-family:'宋体';font-size:10.5pt;mso-spacerun:'yes';">如果function返回true,该记录就返回。否则就不返回。</span></p>        <br /> 转自:        <a href="/misc/goto?guid=4959498287583782872" target="_blank">http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365244.html</a>        <p style="margin-top:0pt;text-indent:21pt;margin-bottom:0pt;"></p>       </div>      </div>     </div>    </div>