﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-潘潘.eagle</title><link>http://www.blogjava.net/zhenxuanpan/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:05:03 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:05:03 GMT</pubDate><ttl>60</ttl><item><title>lucene数值查找中空值问题</title><link>http://www.blogjava.net/zhenxuanpan/archive/2012/06/14/380731.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Thu, 14 Jun 2012 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2012/06/14/380731.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/380731.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2012/06/14/380731.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/380731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/380731.html</trackback:ping><description><![CDATA[最近用lucene,遇到一个数值查找中空的问题，发现各种诡异。有lucene高手可以看看。具体<a href="http://impzx.com/?p=105">这里</a>。<img src ="http://www.blogjava.net/zhenxuanpan/aggbug/380731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2012-06-14 09:15 <a href="http://www.blogjava.net/zhenxuanpan/archive/2012/06/14/380731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL语句执行流程的一个困惑</title><link>http://www.blogjava.net/zhenxuanpan/archive/2012/04/26/376643.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Thu, 26 Apr 2012 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2012/04/26/376643.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/376643.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2012/04/26/376643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/376643.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/376643.html</trackback:ping><description><![CDATA[&nbsp; &nbsp;昨天写了一个错误的SQL，后来分析了一些SQL语句的执行流程。。<br />&nbsp; &nbsp;新的问题又来了，囧。。点击<a href="http://impzx.com/?p=48">这里</a><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/376643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2012-04-26 09:19 <a href="http://www.blogjava.net/zhenxuanpan/archive/2012/04/26/376643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内存计算遇到的一个问题</title><link>http://www.blogjava.net/zhenxuanpan/archive/2012/04/18/375200.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Wed, 18 Apr 2012 15:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2012/04/18/375200.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/375200.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2012/04/18/375200.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/375200.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/375200.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; 今天遇到的一个问题，具体的问题看<a href="http://impzx.com/?p=33">这里</a>。<br />&nbsp; &nbsp; 求高手解答。。。<img src ="http://www.blogjava.net/zhenxuanpan/aggbug/375200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2012-04-18 23:07 <a href="http://www.blogjava.net/zhenxuanpan/archive/2012/04/18/375200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Liquibase+spring 初步使用</title><link>http://www.blogjava.net/zhenxuanpan/archive/2012/02/09/369631.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Wed, 08 Feb 2012 16:09:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2012/02/09/369631.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/369631.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2012/02/09/369631.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/369631.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/369631.html</trackback:ping><description><![CDATA[<div>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">现在的工作的项目中用了liquibase，感觉挺爽的，可以跟踪、管理数据库的重构。这对于很多需求变更较大的项目是非常不错的，特别是互联网的项目。（虽然互联网Nosql已经非常流行，不过俺觉得传统关系型数据库还是有存在的必要的）</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">好了，废话不多说，说说这几天的学习心得和实战总结。</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">关于liquibase的优点就不多说了，可以去官网看简介。</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">基本上我是从quickStart开始看的。Liquibase的原理很简单，就是通过记录数据库的结构方面的所有重构都放在一个Changelog中的xml中，通过xml的changeSet去跟踪数据库的变更。</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">在最近的工作中很好奇，为什么liquibase可以做到识别哪一个ChangeSet需要去对数据库重构，哪一个不重构（已经执行了数据库结构的修改操作）。通过测试以后发现，liquibase第一次运行的时候会在DB建立两张表，分别是databasechangelog和databasechagneloglock：<br />
</span></p>
<div>
<p style="margin-bottom: 0pt; margin-top: 0pt; "><img src="http://www.blogjava.net/images/blogjava_net/zhenxuanpan/图片1.jpg" width="203" height="97" alt="" /><br />
</p>
<div>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">这样就很好理解了，通过DB去继续并匹配旧的操作和新的操作。</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="font-size: 10.5pt; font-family: 宋体; ">继续看databasechange表结构，就发现表结构的主键是ID,AUTHOR,FILENAME.<br />
<img src="http://www.blogjava.net/images/blogjava_net/zhenxuanpan/图片2.jpg" width="505" height="292" alt="" /><br />
</span></p>
<div>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">即通过每一个ChangeSet的ID+修改ChangeSet的作者标示+包含ChangeSet的文件名</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">来，也这避免了多人协同开发的冲突。（关于ID和AUTHOR可以再后面配置文件中看到）</span></p>
<p style="margin-bottom: 0pt; margin-top: 0pt; "><span style="font-size: 10.5pt; font-family: 宋体; ">关于databasechangelog，我的理解则是当年是否有操作占有数据库变更的锁<br />
<img src="http://www.blogjava.net/images/blogjava_net/zhenxuanpan/图片3.jpg" width="498" height="143" alt="" /><br />
</span></p>
<div>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Ps：开始认为这个ID和databasechange的ID应该是同一个值，后来才发现不同，因为属性值不同，这里的ID应该是databasechange表中的ORDEREXECUTED。这个值应该是数据库根据执行顺序确定的序列号而不是用户在xml中配置的ID号。</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">看完这些，就来看看liquibase怎么在项目中使用，</span></p>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">吐槽一下，官方的quickStart写的有点烂，只列了如下几种：<br />
<img src="http://www.blogjava.net/images/blogjava_net/zhenxuanpan/图片4.jpg" width="416" height="39" alt="" /><br />
</span></p>
<div>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">一看，我就觉得有点晕，command&nbsp;line我觉得好囧，Ant我不会应该也快被maven淘汰了吧？Grails我google了一下才有所了解。那我知道的就maven和servlet&nbsp;listener。Servlet&nbsp;listener&nbsp;非web项目咋办呢？好吧，只有maven一条出路了。在官网找了半天，才发现这东西还支持spring,刚好手头的项目是架在spring上面的。<br />
<img src="http://www.blogjava.net/images/blogjava_net/zhenxuanpan/图片5.jpg" width="154" height="131" alt="" /><br />
</span></p>
<div>
<p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">所以，就在spring上面捣鼓了一下，把官方的配置copy一份到自己的xml中就行了（</span><a href="http://www.liquibase.org/manual/spring"><span style="mso-spacerun:'yes'; color:#0000ff; text-decoration:underline ;font-size:10.5000pt; font-family:'Times New Roman'; ">http://www.liquibase.org/manual/spring</span></a>&nbsp;<span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">）。<br />
<br />
</span></p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">bean&nbsp;id="liquibase"&nbsp;class="liquibase.integration.spring.SpringLiquibase"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="dataSource"</span><span style="color: #FF0000; ">&nbsp;ref</span><span style="color: #0000FF; ">="myDataSource"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="changeLog"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="classpath:db-changelog.xml"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contexts&nbsp;specifies&nbsp;the&nbsp;runtime&nbsp;contexts&nbsp;to&nbsp;use.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="contexts"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="test,&nbsp;production"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;<br />
</span></div>
<p>&nbsp;<span class="Apple-style-span" style="font-family: 宋体; ">运行了一下，一切OK。</span></p><div><div style="layout-grid:15.6000pt; "><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">不过还是要吐槽一下，如果不是web项目，不用maven,不用spring.那这东西是不是就不能用了呢？</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">为啥不能支持一下通过代码去load执行呢？</span></p></div></div>
</div>
<p>&nbsp;-------------------------------------------------------------------------------------<br />初步使用了一下，值得挖掘的东西应该还是很多的。<br />记录一下liquibase的源代码地址：<a href="https://github.com/liquibase/liquibase">https://github.com/liquibase/liquibase</a>。</p>
</div>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
</div><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/369631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2012-02-09 00:09 <a href="http://www.blogjava.net/zhenxuanpan/archive/2012/02/09/369631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用maven构建java web项目</title><link>http://www.blogjava.net/zhenxuanpan/archive/2012/01/31/369045.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Mon, 30 Jan 2012 17:20:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2012/01/31/369045.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/369045.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2012/01/31/369045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/369045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/369045.html</trackback:ping><description><![CDATA[<div> 	 	 	   <p style="margin-bottom: 0cm">1、mvn archetype:create -DgroupId=com.cloudlab.app -DartifactId=alblcore -DarchetypeArtifactId=maven-archetype-webapp</p> <p style="margin-bottom: 0cm">构建一个maven的webapp项目</p> <p style="margin-bottom: 0cm">2、到src下mkdir相关的目录</p> <p style="margin-bottom: 0cm">	主要的目录见：<a href="http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html</a></p> <p style="margin-bottom: 0cm">3、mvn package</p> <p style="margin-bottom: 0cm">4、mvn eclipse:eclipse -Dwtpversion=1.0</p> <p style="margin-bottom: 0cm">5、mvn clean package -Dmaven.test.skip=true</p></div><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/369045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2012-01-31 01:20 <a href="http://www.blogjava.net/zhenxuanpan/archive/2012/01/31/369045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java Annotation初用</title><link>http://www.blogjava.net/zhenxuanpan/archive/2012/01/21/368799.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Fri, 20 Jan 2012 17:19:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2012/01/21/368799.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/368799.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2012/01/21/368799.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/368799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/368799.html</trackback:ping><description><![CDATA[<div>
<p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">对</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">java的Annotation不是太熟悉，不过最近又要用，所以就找了相关的文档看了下，并写了一个Demo</span></p>
<p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">基本的需求如下：</span></p>
<p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Server根据对方传递的类型码找到具体的某个类的具体方法并运行。个人觉得用Annotation去注释代码比较好，也减少配置文件，所以就体验了一把。<br />
</span></p>
<div>
<p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">具体代码如下：</span></p>
<p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">1、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">先定义一个自己的Annotation</span></p>
</div>
<span class="Apple-style-span" style="font-family: 宋体; font-size: 13px; ">@Retention(RetentionPolicy.RUNTIME)</span><span style="font-family: 宋体; ">
<div>
<div style="background-color: #eeeeee; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="font-size: 13px; color: #0000ff; ">public</span><span style="font-size: 13px; color: #000000; ">&nbsp;@</span><span style="font-size: 13px; color: #0000ff; ">interface</span><span style="color: #000000; "><font class="Apple-style-span" size="2">&nbsp;CodeAnnotation&nbsp;{</font><br />
<font class="Apple-style-span" size="2">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;code();</font><br />
<font class="Apple-style-span" size="2">}</font></span></div>
</div>
</span>
<p>&nbsp; &nbsp; &nbsp;<span class="Apple-style-span" style="font-family: 宋体; font-size: 16px; ">这里一定要将自己的Annotation定义为运行时的，默认好像是编译时的，所以无法动态的根据server接收到的code去匹配函数<br />
&nbsp; &nbsp;2、</span><span class="Apple-style-span" style="font-size: 13px; ">@Override</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">定义父类basicHandler通过放射去获取执行子类的方法<br />
</span></p>
<div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Message&nbsp;execute(Message&nbsp;message)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;code&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;message.getCode();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;className&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.getClass().getName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Message&nbsp;msg&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(Method&nbsp;m&nbsp;:&nbsp;Class.forName(className).getMethods())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(m.getAnnotation(CodeAnnotation.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(code.equals(m.getAnnotation(CodeAnnotation.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">).code()))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Message)m.invoke(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">,&nbsp;message);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(IllegalArgumentException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(IllegalAccessException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(InvocationTargetException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(SecurityException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(ClassNotFoundException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;msg;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span></div>
</div>&nbsp; &nbsp; &nbsp; <span class="Apple-style-span" style="font-family: 'Courier New'; font-size: 16px; ">这是基类中的方法，基类实现了接口中的execute方法，子类继承父类，并添加具体的业务方法和代码<br />&nbsp; &nbsp;3、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">一个具体的handler类示例<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">@CodeAnnotation(code&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">10000001</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Message&nbsp;method(Message&nbsp;message)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(message.getUserId());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">TODO:</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>&nbsp; &nbsp;&nbsp;</span><span class="Apple-style-span" style="font-family: 宋体; ">上面的代码，基本上手工的完成了命令码和方法的映射，个人对Spring还不是很精通，不知道Spring有没有完成现成的功能，不想重复早轮子。希望大侠们可以留言告之。</span><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/368799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2012-01-21 01:19 <a href="http://www.blogjava.net/zhenxuanpan/archive/2012/01/21/368799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>full stack framework解释</title><link>http://www.blogjava.net/zhenxuanpan/archive/2011/12/14/366372.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Wed, 14 Dec 2011 12:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2011/12/14/366372.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/366372.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2011/12/14/366372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/366372.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/366372.html</trackback:ping><description><![CDATA[&nbsp; &nbsp;今天上iteye上看到一个老帖子，是关于full-stack framework的一个点评，对这个概念并不熟悉，所以就google了一下，综合下各方面的解释。<br />&nbsp; &nbsp;1、from wiki<br /><img src="http://www.blogjava.net/images/blogjava_net/zhenxuanpan/捕获.PNG" width="1069" height="59" alt="" /><br />&nbsp; &nbsp;基本意思是说：full stack framework是将有用的多个web开发库整合为一个单内聚的软件栈框架（栈应该是一个形象的比喻吧）给web 开发者使用。<br />&nbsp; &nbsp;个人的理解应该就是一整套的解决方案，而不是像struts这样只是MVC或者像mybatis这样的ORM框架。<br />&nbsp; &nbsp;2、oschina上面刚好也有人问这个问题，看的一个不错的解答，就copy过来<br />&nbsp; &nbsp;&nbsp;<div style="display: inline-block; "></div><span class="Apple-style-span" style="font-family: Verdana, sans-serif, 宋体; font-size: 13px; line-height: normal; "><div class="body" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; float: left; width: 630px; "><div class="detail" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-size: 10.5pt; "><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; ">&nbsp; &nbsp; &nbsp;full-stack 的设计，意味着各层能够无缝的集成在一起，遵循的DRY原则（don't repeat &nbsp; &nbsp; yourself)，将各层共用的东西，抽取出来，并通过自顶向下的设计，无缝的集成在一起，粘合在一起，达到更高层次、更粗粒度的重用，同时为了保证灵活的可扩展性，在更高、更粗的粒度上遵守开放-封闭的原则，在各层的各个关键点，要提供诸多的钩子，回调的接口，供使用者扩展。full-stack的设计，在层与层之间，并不一味的追求松散的机制，而是相反，在层与层之间增强一定的内聚性，粘合力，以此来达到粗粒度的封装与重用。</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; ">可以说full-stack 的设计，其爆发出的威力是巨大的，相对普通的单一层面的设计，在开发效率上不是一个层次上的，基于28原理的设计，可以满足80的调用者直接开发，19%的调用者，通过扩展点进行扩展来满足需求，对于1%钻角尖的需求，自己去造轮子。</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; ">spring, ruby on rails, Zend都是这样的工业级强度的full-stack的设计，我们的设计如果以他们为中心，生产力得到了极大的提高。<br />&nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp;</p></div></div></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif, 宋体; line-height: normal; "><br /><div class="clear" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; clear: both; font-size: 1px; line-height: 0; "></div><div class="replies" id="PostReplies_62547" style="font-size: 13px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 50px; "></div></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif, 宋体; font-size: 13px; line-height: normal; "><div class="body" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; float: left; width: 630px; "><div class="detail" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-size: 10.5pt; "><div></div></div></div><div class="clear" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; clear: both; font-size: 1px; line-height: 0; "></div><div class="replies" id="PostReplies_62547" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 50px; "></div></span><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/366372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2011-12-14 20:26 <a href="http://www.blogjava.net/zhenxuanpan/archive/2011/12/14/366372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mongoDB的学习笔记（2）</title><link>http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365315.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Thu, 01 Dec 2011 09:21:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365315.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/365315.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/365315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/365315.html</trackback:ping><description><![CDATA[&nbsp; &nbsp;实验室从去年开始接触Nosql,不过那个时候自己不是负责这部分的所以只是介于组会的时候讨论了解。后来去实习，这个东东越来越火了。以至于俺觉得自己也要去学习一下，这些天一直看这方面的东西。最大的感觉就是它组织结构的变化带来的方便，这也是算是肤浅的感觉吧，新手一般都有这样的体验，至于网上一直叫好的速度快（据说比传统的关系型数据库快5倍左右），由于木有实战的体验，目前还木有深刻的认识。前段时间一直在做一个MIS系统，被数据库折腾的却是够呛，数据库设计的人太过考虑各种范式，以至于开发困难很多。在看看mogodb确实给人焕然一新的感觉。呵呵。目前感觉就是这么多，继续记录一下自己的学习的笔记，这部分主要是mogodb的查询操作。mogodb的查询功能确实比标准的sql强大很多，特别是各种修改器和基于js函数的$where查询。<br />----start----<br /><div><div style="layout-grid:15.6000pt; "><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Mongodb的查询操作</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">1、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">查询全部集合</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.post.find()&nbsp;</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">如果是console的话，默认显示20条记录</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">2、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">返回指定的键</span></p><p style="margin-left:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.post.find({},&nbsp;{"foo"&nbsp;:&nbsp;1,&nbsp;"baz"&nbsp;:&nbsp;1})</span></p><p style="margin-left:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">返回键foo和健baz，同时默认返回_id键的值	</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">3、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">指定不返回的键</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.post.find({},&nbsp;{"foo"&nbsp;:&nbsp;0})</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">返回除foo之外的其他键</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">4、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">判定条件查询</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">a)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$lt&#8221;&nbsp;小于</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">b)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$lte&#8221;小于等于</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">c)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$gt&#8221;大于</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">d)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$gte&#8221;大于等于</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">e)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$ne&#8221;不等于</span></p><p style="margin-left:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.find({"age"&nbsp;:&nbsp;{"$gte"&nbsp;:&nbsp;18,&nbsp;"$lte"&nbsp;:&nbsp;30}})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">5、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">其他条件查询</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">a)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$in&#8221;&nbsp;：是否在某一个集合的查询</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.find({"age"&nbsp;:&nbsp;{"$in"&nbsp;:&nbsp;[17,18,19]}})</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">b)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$nin&#8221;：与in相对应，不处于某个结合的文档</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">c)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$or&#8221;：多条件查询</span></p><p style="margin-left:42.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.find({"$or"&nbsp;:&nbsp;[{"age"&nbsp;:&nbsp;17},&nbsp;{"age"&nbsp;:&nbsp;18}]})</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">d)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$not&#8221;非的情况下使用。其他条件可以基于它</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">e)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$mod&#8221;取模查询</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">f)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$null&#8221;可以匹配值为null的字段，同时也能匹配键不存在的文档</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">如果同时要判定键存在，需要加上"$exists"&nbsp;判定</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">6、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">查询数组</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">a)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&#8220;$all&#8221;&nbsp;通过多个元素匹配数组</span></p><p style="margin-left:42.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.food.find({"fruit"&nbsp;:&nbsp;{"$all"&nbsp;:&nbsp;["apple",&nbsp;"oracle"]}})</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">b)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">数组下标匹配</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.food.find({"fruit.2"&nbsp;:&nbsp;&nbsp;"peach"})</span></p><p style="margin-left:42.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'Times New Roman'; ">c)&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">"$size"数组长度匹配&nbsp;</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.food.find("fruit"&nbsp;:&nbsp;{"$size"&nbsp;:&nbsp;3})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">7、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">"$slice"指定返回集合的个数</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.posts.find(criteria,&nbsp;{"$silce"&nbsp;:&nbsp;n})</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">n&nbsp;=&nbsp;10&nbsp;返回前10条记录</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">n&nbsp;=&nbsp;-10&nbsp;返回后10条记录</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">n&nbsp;=&nbsp;[23,&nbsp;10]&nbsp;返回从23条记录开始的10条记录，感觉应该可以做分页</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">8、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">采用点表示法查询内嵌文档(推荐)</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.find({"name.first"&nbsp;:&nbsp;"Wang",&nbsp;"name.last"&nbsp;:&nbsp;"Hai"})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">9、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">采用分层的方式查询</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.find({"name"&nbsp;:&nbsp;{"first"&nbsp;:&nbsp;"Wang,&nbsp;"last"&nbsp;:&nbsp;"Hai""}})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">10、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">$where查询</span></p><p style="margin-left:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">$where查询非常强大，它可以添加js的函数实现高级的查询功能。</span></p><p style="margin-left:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">基本样式如下：</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.find({"$where"&nbsp;:&nbsp;function()&nbsp;{}})</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">如果function返回true，该记录就返回。否则就不返回。</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">【对js不够熟悉。。面壁去了】</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p></div></div><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/365315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2011-12-01 17:21 <a href="http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mongoDB的学习笔记</title><link>http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365244.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Wed, 30 Nov 2011 16:32:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365244.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/365244.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/365244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/365244.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; 最近在学习Mogodb,目前只是出于学习阶段，还没有在项目中实战过，记录一下下学习的总结。<br />----start----<br /><div><div><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">基本概念：</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">1、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">文档&nbsp;--&gt;&nbsp;对应关系数据库的行，也就是一条记录。它比关系数据库的行的功能要强大，更像是是某个具体的对象。文档以一种Map的形式展现出来，当然value可以是任意的类型，也可以继续是一个文档（递归的定义）</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">2、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">集合&nbsp;--&gt;&nbsp;对应关系数据库的表。但是它又是无模式的，即文档不要求一致。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">基本操作：</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">1、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">显示数据库</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">show&nbsp;dbs</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">2、创建数据库：</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">use&nbsp;yourDateBaseName&nbsp;这就创建了一个数据库。</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">不过你用show&nbsp;dbs，并不能显示yourDataBaseName，因为这个数据库没有任何操作。所以如果你直接离开，则本数据库会被废除。</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">如果你插入一条记录，此时就可以通过show&nbsp;dbs看到对应的数据库</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">如下：</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">record&nbsp;=&nbsp;{"name"&nbsp;:&nbsp;"wang",&nbsp;"age"&nbsp;:&nbsp;20,&nbsp;"password"&nbsp;:&nbsp;"123456"}</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.yourDateBaseName.yourTableName.insert(record)</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">这时使用show&nbsp;dbs就可以看到你的数据库了</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">3、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">显示数据库</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">show&nbsp;collections。默认的包含system.indexes&nbsp;表</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">4、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">创建集合：</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">因为mongodb中集合是无模式的，不像传统的关系型数据库是需要预先申明表包含哪些字段并且定义字段的属性。虽有无需预先定义。使用的时候直接插入。可以见上面的例子。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">5、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">删除集合</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.yourDatabaseName.yourCollectionName.drop()</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">6、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">将文档插入集合</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">record&nbsp;=&nbsp;{"name"&nbsp;:&nbsp;"wang",&nbsp;"age"&nbsp;:&nbsp;20,&nbsp;"password"&nbsp;:&nbsp;"123456"}</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.yourDatabaseName.yourCollectionName.insert(record)</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">7、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">删除集合中的文档</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.yourDatabaseName,yourCollectionName.remove()</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">会清空此集合中的所有文档</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">8、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">文档更新</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Mongo中的更新有两种</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">一种是：用新的文档去替换旧的文档。【就是通过条件先将满足条件的选出来该文档，修改完之后替换旧的文档】，个人不喜欢这种操作，违背了原子性啊。</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">另外一种：采用Mongo的修改器对文档进行修改。</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">修改器列表：</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">8.1、&#8220;$set&#8221;修改器：用了指定一个健的值。如果健不存在，就创建它。</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;Example:</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},&nbsp;{"$set"&nbsp;:&nbsp;{"sex"&nbsp;:&nbsp;"male"}})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;$unset&#8221;删除某个健</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example:</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">	</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">	</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">	</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">	</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{"$unset"&nbsp;:&nbsp;{"sex"&nbsp;:&nbsp;1}})</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;8.2、&#8220;$inc&#8221;修改器用了增加已有的健的值，或者在键不存在的时候创建一个健。</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Example:</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},&nbsp;</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">	</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{"$inc"&nbsp;:&nbsp;{"age"&nbsp;:&nbsp;1}})&nbsp;</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Tips:&nbsp;$inc&nbsp;只能用于整数，长整数和双精度浮点数。其他数会导致失败。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.3、&#8220;$push&#8221;会向已有的数组末尾加入一个元素，要是没有就会创建一个新的数组。</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Example:</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$push&nbsp;:&nbsp;{"comments"&nbsp;:&nbsp;"this&nbsp;is&nbsp;my&nbsp;comments"}})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.4、&#8220;$ne&#8221;not&nbsp;equal判定器，【判定给定的属性不等于给定值】</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Example:</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.update({"comments"&nbsp;:&nbsp;{"$ne"&nbsp;:&nbsp;"this&nbsp;is&nbsp;comments"},</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{$push&nbsp;:&nbsp;{"comments"&nbsp;:&nbsp;"your&nbsp;comments"}})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.5、&#8220;$addToSet&#8221;在不重复的情况下添加</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Example:</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{"$addToSet"&nbsp;:&nbsp;{"comments"&nbsp;:&nbsp;"your&nbsp;comments"}})</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.6、&#8220;$each&#8221;数组遍历修改器</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Example:</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{"$addToSet"&nbsp;:&nbsp;{"comments"&nbsp;:&nbsp;{"$each"&nbsp;:&nbsp;["a&nbsp;commnet",&nbsp;"b&nbsp;comment"]}}})</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;8.7、&#8220;$pop&#8221;修改器，从数组中删除任何一端删除元素</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Example:</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{$pop&nbsp;:&nbsp;{key&nbsp;:&nbsp;1}}从数组末尾删除一个元素</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{$pop&nbsp;:&nbsp;{key&nbsp;:&nbsp;-1}}从数组头部删除</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.8、数组定位修改器</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Example:</span></p><p style="margin-left:42.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">db.myMongodb.user.update({"comments.author"&nbsp;:&nbsp;"john"},</span></p><p style="margin-left:63.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">{"$set"&nbsp;:&nbsp;{"comments.$.author"&nbsp;:&nbsp;"jim"}})</span></p><p style="margin-left:21.0000pt; text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">定位到第一个john的第一条评论</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">9、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">特殊的更新or插入&nbsp;upsert</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">Upsert的特点是如果存在就更新，如果不存在就根据update的条件插入一条新的记录</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">10、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">批量更新</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">需要设置update的第四个参数为true,否则默认更新第一个匹配的文档</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">11、</span><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">得到上一条命令的执行结果<br /></span><span class="Apple-style-span" style="font-family: 宋体; ">&nbsp; &nbsp; db.runCommand({getLastError&nbsp;:&nbsp;1})</span></p></div></div><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/365244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2011-12-01 00:32 <a href="http://www.blogjava.net/zhenxuanpan/archive/2011/12/01/365244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mongoDB的安装</title><link>http://www.blogjava.net/zhenxuanpan/archive/2011/11/26/364895.html</link><dc:creator>潘潘.eagle</dc:creator><author>潘潘.eagle</author><pubDate>Sat, 26 Nov 2011 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhenxuanpan/archive/2011/11/26/364895.html</guid><wfw:comment>http://www.blogjava.net/zhenxuanpan/comments/364895.html</wfw:comment><comments>http://www.blogjava.net/zhenxuanpan/archive/2011/11/26/364895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenxuanpan/comments/commentRss/364895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenxuanpan/services/trackbacks/364895.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; &nbsp; 晚上折腾着安装了下mongoDB,小尝试了一下，慢好用的东东。记录下mongoDB的安装步骤（其实蛮简单的，只是在自己blog里面记录一下）<br />&nbsp; &nbsp; &nbsp;&nbsp;1、sudo apt-get install mongodb<div><div>&nbsp; &nbsp; &nbsp; 2、sudo apt-get install xulrunner-dev</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;find /usr/lib | grep libmozjs</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;做一个软链接&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sudo ln -s /user/lib/xulrunner-devel-***/libmozjs.so /user/lib</div><div>&nbsp; &nbsp; &nbsp; 3、重启mongodb sudo service mongodb restart</div><div>&nbsp; &nbsp; &nbsp; 4、链接mongodb /user/lib/mongodb/mongo就进入mongodb了</div></div><img src ="http://www.blogjava.net/zhenxuanpan/aggbug/364895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenxuanpan/" target="_blank">潘潘.eagle</a> 2011-11-26 21:07 <a href="http://www.blogjava.net/zhenxuanpan/archive/2011/11/26/364895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>