??xml version="1.0" encoding="utf-8" standalone="yes"?>正在播放亚洲,欧美成人精品一区二区男人小说,性人久久久久http://www.aygfsteel.com/dongbule/category/46253.html建造高性能门户|?/description>zh-cnSat, 30 Jul 2011 14:34:27 GMTSat, 30 Jul 2011 14:34:27 GMT60述MongoDB的管理操?/title><link>http://www.aygfsteel.com/dongbule/archive/2011/07/30/355409.html</link><dc:creator>陈于?/dc:creator><author>陈于?/author><pubDate>Sat, 30 Jul 2011 10:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/dongbule/archive/2011/07/30/355409.html</guid><wfw:comment>http://www.aygfsteel.com/dongbule/comments/355409.html</wfw:comment><comments>http://www.aygfsteel.com/dongbule/archive/2011/07/30/355409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dongbule/comments/commentRss/355409.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dongbule/services/trackbacks/355409.html</trackback:ping><description><![CDATA[<div>     不知不觉房pȝ已经使用MongoDB一q多了,记得一q多以前Q正是NOSQL被热炒时QMongoDB更是作ؓNOSQL中的g者,被炒得火烫,也应该就在当时被q股火烫着了,所以义无反儡选择了MongoDBQ现在想惛_时确实有些冲动了Q当时MongoDB的资料还是比较少Q更别说中文资料了,后来q出C用MongoDB成功应用的范例Foursquare的宕Z件。现在确实应该很感谢MongoDB为我们的pȝ服务了一q了Q在q一q的旉里,实出现q不的问题,特别是在理操作上,我想q大概也是因为MongoDB在系l维护上不如Mysql那样有着各种的业界实践,往往只能通过理员自己去摸烦?br /> 下面在q一q的一些简单的理操作做一下记?br /><br /><div><div>    <a href="#x1">Starting and Stopping Mongo</a></div> <div>    <a href="#x2">Security and Authentication</a></div> <div>    <a href="#x3">Monitoring and Diagnostics</a></div> <div>    <a href="#x4">Backups</a></div> </div><br /> <div><strong><a target=""><span style="font-size: 12pt;">Starting and Stopping Mongo</span></a></strong><a target=""><a name='x1' id='x1'></a></a><strong><a target=""><span style="font-size: 12pt;"></span></a><br /> <br /> </strong><span style="background-color: #ccffcc;">MongoDB启动</span><strong><br /> </strong> <div>对了QMongoDB在linux下是无需安装的,从官|上下蝲下安装包后解压,直接执行mongodQ就可以启动MongoDB服务器,当然mongodq有很多的启动选择,q行mongod --help可以查看所有的选择V?br /> <br /> -f [ --config ] arg   configuration file specifying additional options<br /> 一般来_启动选择可以直接写在在mongod后面Q也可以指定配置文gQ用文g来加载各U启动项Q如<br /> /home/mongodb/bin/mongod --config /home/mongodb/conf/mongod.conf</div> <strong><br /> </strong></div> <img src="http://www.aygfsteel.com/images/blogjava_net/dongbule/46046/1.jpg" alt="" width="725" border="0" height="195" /></div> <div>上面是一台测试机的启动选择V?br /> <br /> dbpath = /home/mongodb/data<br />     指定数据库的存储目录Q如果不讄则以mongodb的根目录为目录,当MongoDB启动之后Q在数据库的存储目录下会创徏一个mongod.lock文gQ它是用来记录当前的mongod的进E号Q同时也用于区分各个mongod的进E实例,所以不同的mongodq程实例是不能用相同的dbpath?br /> logpath = /home/mongodb/mongodb.log<br />     指定日志输出的\径,如果没有讄logappend = trueQ系l会清除原来的日志记录,把已有的文gq行覆盖?br /> logappend = true<br />     日志以追加的方式q行记录<br /> bind_ip = 192.168.86.111<br />     指定对外服务的绑定ipQ这里指定内|的ip方式Q如果外|无Ҏ的处理方式是无法q行q接?br /> port = 27017<br />     指定服务器的监听端口P默认?7017Q如果单个机器要q行多个mongodq程Q则需要给每个q程指定不同的端口号?br /> fork = true<br />     指定以守护进E的方式来启动MongoDBQ如果不指定Q在启动mongod命o是加“&”也是可以的?br /> auth = true<br />     启动mongodb客户端登录的认证机制?br /> master = true<br />     指定该机器ؓM模式下的L器?br /> 配置完配|文件后启栋mongodQ启动时要盯着日志文g看,因ؓ日志通常会告诉我们一些错误或警告的信息,q样能够更好的帮助我们了解和避免错误?br /> <img src="http://www.aygfsteel.com/images/blogjava_net/dongbule/46046/2.jpg" alt="" width="729" border="0" height="94" /><br /> <br /> <div>q里l出了个提示Q用的?2位的MongodbQ所以MongoDB只是存储最大ؓ2GB的数据。其实这个跟MongoDB的mmap机制有关Q如果是64位则不会存在q种限制?br /> h意一定要盯着日志?br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">tail </span><span style="color: #000000;">-</span><span style="color: #000000;">100f </span><span style="color: #000000;">/</span><span style="color: #000000;">home</span><span style="color: #000000;">/</span><span style="color: #000000;">mongodb</span><span style="color: #000000;">/</span><span style="color: #000000;">mongodb.log</span></div> <br /> <div><span style="background-color: #ccffcc;">停止MongoDB</span></div> <div>千万要强调的是千万不要用kill -9d闭mongodQ这h据库会不理一切直接杀死该q程Q会使得数据文g损坏?br /> E_的方法是使用kill -2 pidd闭mongodQ也是当mongodq程接受到关闭指令后会等待当前运行操作或文g分配{操作完毕后Q关闭所有打开的连接,q将~存的数据刷新到盘后才正式关闭?br /> 最E_的方式是使用shutdown命o来结?br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">></span><span style="color: #000000;"> use admin<br /> switched to db admin<br /> </span><span style="color: #000000;">></span><span style="color: #000000;"> db.shutdownServer();</span></div> <br /> <div><strong>Security and Authentication</strong><a name='x2' id='x2'></a><br /><strong> <br /> </strong></div> </div> <div>打开mongodb.org的Security文档Q第一句话是 Running Without Security(Trusted Environment)Q跟我们世界上没有什么百分百安全的环境,最好的安全是放在一个安全的环境中运行,q么无底气的话语未免也让Zؓ它的安全担心Q不q事实上MongoDBq是有安全认证模式的Q只不过跟mysqlҎh有一点简陋?br /> <br /> <span style="background-color: #ccffcc;">MongoDB的安?/span><br /> MongoDB目前只支持最基本的安全认证,如果我们开启了安全性检查,则只有数据库认证用户才能q行d操作Q当然我们还可以创徏d权限用户和只L限用P如果我们在admin的数据库中进行创建用P那么admin中的用户׃被当作超U用P用户可以d所有的数据库,q且q可以进行特D的理操作Q比如可以再创徏其他用户关闭q程{操作?br /> <br /> <span style="background-color: #ccffcc;">配置MongoDb用户认证</span><br /> Ҏ官网上的例子Q我们也来创Z个超U用P一个test库中hd操作的普通用P一个test库中只有L作的普通用戗?/div> <br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">> use admin<br /> switched to db admin<br /> > db.addUser(</span><span style="color: #000000;">"</span><span style="color: #000000;">cyz</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">abc</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br /> {<br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">_id</span><span style="color: #000000;">"</span><span style="color: #000000;"> : ObjectId(</span><span style="color: #000000;">"</span><span style="color: #000000;">4dba5fe7c6792ae30fea3c31</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">user</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">"</span><span style="color: #000000;">cyz</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">readOnly</span><span style="color: #000000;">"</span><span style="color: #000000;"> : false</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">pwd</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">"</span><span style="color: #000000;">8658a5bf469e005b047560619ef0d51c</span><span style="color: #000000;">"</span><span style="color: #000000;"><br /> }<br /> > use test<br /> switched to db test<br /> > db.addUser(</span><span style="color: #000000;">"</span><span style="color: #000000;">cyz001</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">abc</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br /> {<br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">user</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">"</span><span style="color: #000000;">cyz001</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">readOnly</span><span style="color: #000000;">"</span><span style="color: #000000;"> : false</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">pwd</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">"</span><span style="color: #000000;">7a597bef551027cc2161d5e0efe4049e</span><span style="color: #000000;">"</span><span style="color: #000000;"><br /> }<br /> > db.addUser(</span><span style="color: #000000;">"</span><span style="color: #000000;">cyz002</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">abc</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">true)<br /> {<br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">user</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">"</span><span style="color: #000000;">cyz002</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">readOnly</span><span style="color: #000000;">"</span><span style="color: #000000;"> : true</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">pwd</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">"</span><span style="color: #000000;">2dde0a3777cd7dd92459a6c3f98afac6</span><span style="color: #000000;">"</span><span style="color: #000000;"><br /> }<br /> </span></div> </div> <div>q里cyz是在admin库中创徏Q属于超U用P可以Ҏ有库q行操作Q在test库中创徏的cyz001和cyz002属于test库的操作人员Q只能对test库进行相应操作,记得要ؓ安全验证生效需要将启动auth讄为true?br /> <br /> <span style="background-color: #ccffcc;">查看用户</span><br /> 所有的用户信息都存储在每个数据库的db.system.users中,可以使用find()q行查看<br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">> use admin<br /> switched to db admin<br /> > db.system.users.find()<br /> { </span><span style="color: #000000;">"</span><span style="color: #000000;">_id</span><span style="color: #000000;">"</span><span style="color: #000000;"> : ObjectId(</span><span style="color: #000000;">"</span><span style="color: #000000;">4dba5fe7c6792ae30fea3c31</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">user</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">"</span><span style="color: #000000;">cyz</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">readOnly</span><span style="color: #000000;">"</span><span style="color: #000000;"> : false</span><span style="color: #000000;">,</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">pwd</span><span style="color: #000000;">"</span><span style="color: #000000;"> : <br /> <br /> </span><span style="color: #000000;">"</span><span style="color: #000000;">8658a5bf469e005b047560619ef0d51c</span><span style="color: #000000;">"</span><span style="color: #000000;"> }</span></div> <br /> 其中的pwd是根据用户名和用户密码生成的散列倹{?br /> <br /> <span style="background-color: #ccffcc;">修改用户</span><br /> 不管是添加用P修改用户密码Q修改用h作权限都使用addUser()来完成。删除用户可以用remove()来实现?/div> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">> db.system.users.find({</span><span style="color: #000000;">"</span><span style="color: #000000;">user</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">"</span><span style="color: #000000;">cyz001</span><span style="color: #000000;">"</span><span style="color: #000000;">})</span></div> </div> <br /> <div><span style="background-color: #ccffcc;">更多的安全考虑</span><br /> <br /> 刚说了MongoDB的安全认证其实还是简陋的Q所以我们还是有其他很多的安全考虑?br /> 1.比如说MongoDB传输协议是不加密的,如果需要加密的话,我们可以考虑使用ssh隧道或是他们的技术来对客L和服务端之间的通讯q行加密?br /> 2.MongoDB部v在只有客L服务器才能访问到的环境,比如内网Qvpn|络中,可以使用 bind_ip = 本机或内|??br /> 3.如果实需要将MongoDB暴露在外部环境可以考虑使用IPTABLES{技术进行访问限制?br /> <br /> <div><strong>Monitoring and Diagnostics</strong><a name='x3' id='x3'></a><br /> <br /> <div>官网首先l我们推荐了mongostat监控工具Q基本上mongostat可以作ؓ一个外部观MongoDB内部状态指标的工具Qƈ且一U更Cơ,如果出现一些性能问题可以用这里入手进行分析?br /> <br /> <img src="http://www.aygfsteel.com/images/blogjava_net/dongbule/46046/3.jpg" alt="" width="1144" border="0" height="122" /></div> <br /> <div>q里的属性都可以通过mongostat --helpq行查看Q有几个列需要解释一下,可以帮助到我们发生性能问题时比较准备的扑ֈ定位?br /> <br /> faultsQ这是一个重要的性能指标Q显CZ的机器每U页面故障的数量Q这个是mongoDB映射到虚拟地址I间Q而不是物理内存,q个值如果飙高的话,可能意味着你的机器没有_的内存来存储数据和磁盘的讉K?br /> flushesQ每U做了多次fsyncQ表面多次数据被刷新进了磁盘?br /> mappedQ是指mmap有多数据量Q也是服务器的内存映射Q其中包含了虚拟内存和常d存?br /> lockedQ这个D面全局写入锁占用了机器多少旉Q?当放生全局写入锁时Q所有的查询操作都将{待Q直到写入锁的解锁,如果q个锁飙高有可能是你的程序那部分出现问题?br /> idx missQB树未命中的比例,q个应该是我们查询的命中的实时指敎ͼ一般在特定查询中会有用到?br /> qr | qwQ如果有太多的查询进行处理,它们׃一个队列的方式q行Q如果这个值飙高的话,那么查询也会变得很慢Q因为后面的队列必须{待前面的队列执行完毕,高ƈ发时Q一般队列g升高?br /> 另外我们q可以在mongodb shell中进行检查,使用db.serverStatus()</div> </div> <img src="http://www.aygfsteel.com/images/blogjava_net/dongbule/46046/4.jpg" alt="" width="683" border="0" height="376" /></div> <br /> <div>基本上db.serverStatus()跟mongostat 差不多,不过它显C的数据更ؓ具体Q它也有一个缺陷就是它的数据是静态的Q不是实时的?br /> <br /> <span style="background-color: #ccffcc;">Http Console</span><br /> 其实mongodbq提供了一个跟直观的检工P在默认情况下Q启动mongodb的同时还会启动一个http的服务器Q用|页展示的信息比前两个工h得更加直观,启动默认的监听端口ؓ28017 httpQ?/ip:28017<br /> <br /> <img src="http://www.aygfsteel.com/images/blogjava_net/dongbule/46046/5.jpg" alt="" width="1178" border="0" height="385" /></div> <img src="http://www.aygfsteel.com/images/blogjava_net/dongbule/46046/6.jpg" alt="" width="1151" border="0" height="236" /><br /> 基本上我们可以看到查询,复制Q锁{等q些的情况,具体的参数还是上官网looklookQhttp://www.mongodb.org/display/DOCS/Http+Interface<br /> <div>当然了,我们q可以用其他的专业监控软gq行监控Q如nagiosQcactiQ这些都有mongodb的插件?br /> <br /> <div><strong>Backups</strong><a name='x4' id='x4'></a><br /> MongoDB的备份机制还是不错的Q备份的方式也是很多Q这个ƈ不比mysql要差?br /> <br /> Shutdown and Backup<br /> 关闭服务Q直接把dbpath参数的目录进行备份,只需把所有的文gq行复制到其他地方就可以Q不q如果这个备份是在服务启动时候做的话Q有可能备䆾的文件会被损坏,虽然q种关闭服务的备份很有效也很安全Q都效果相当不理惟?br /> <br /> mongodump & mongorestore<br /> mongodump直就是mysqldump的另一版,如果你用过mysqldump那就再熟悉不q了Qmongodbdump可以使用在各个客LQ对正在q行的mongodb服务做出查询Q然后将所有查到的文本写入到客L的磁盘?/div> </div> <img src="http://www.aygfsteel.com/images/blogjava_net/dongbule/46046/7.jpg" alt="" width="704" border="0" height="257" /><br /> <br /> <div><br /> 除了mongodumpQMongoDBq提供了从备份中恢复数据的工具mongorestoreQmongorestore从mongodump获取l果Qƈ备份的数据插入到运行的MongoDB实例?/div> <br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">./mongodump --db test --collection user --out - > /home/chenyz/cyz.bson<br /> ./mongorestore --db test --collection user --directoryperdb /home/chenyz/cyz.bson --drop cyz.bson</span></div> <br /> <div>上面的例子中Q指定了要备份的db和要备䆾的collectionQ?-drop表明要在恢复前删除集合,否则Q数据将和现有的集合数据合ƈ?br /> <br /> <span style="background-color: #ccffcc;">M备䆾</span><br /> 上面说的几种备䆾数据方式已经很灵zMQ但都不及在从服务器上备份来得方便,从服务器的数据几乎是于主服务器进行同步,涉及C从方面还有很多,从服务器备䆾׃攑֜q里讲了?br /> <br /> <span style="background-color: #ccffcc;">修复</span><br /> 遇到一些停电,或非法关闭mongodbQ不合理备䆾文g的操作,往往会出现文件损毁的提示Q幸好,mongodb内置的修复功能会试着L复损坏的文g?br /> 操作很简单,只需在启动mongod 加入 --repair启动,pȝ׃所有的文g导入忽略那些无效的文档然后进行导入,完成之后Q会重新建立索引Q数据量大的话需要花费很长的旉Q因为所有的文g都需要进行验证,所有的索引都需要重建,另外修复数据库还能v到压~数据的作用Q闲|的I间Q碎片在修复后会被重新回收进行用?br /> <br /> 另外在shell中也可以直接q行repair操作<br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">> db.repairDatabase()<br /> {<br />         </span><span style="color: #000000;">"</span><span style="color: #000000;">ok</span><span style="color: #000000;">"</span><span style="color: #000000;"> : </span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> }</span></div> </div><img src ="http://www.aygfsteel.com/dongbule/aggbug/355409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dongbule/" target="_blank">陈于?/a> 2011-07-30 18:23 <a href="http://www.aygfsteel.com/dongbule/archive/2011/07/30/355409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MongoDB with Morphiahttp://www.aygfsteel.com/dongbule/archive/2010/09/16/332218.html陈于?/dc:creator>陈于?/author>Thu, 16 Sep 2010 09:41:00 GMThttp://www.aygfsteel.com/dongbule/archive/2010/09/16/332218.htmlhttp://www.aygfsteel.com/dongbule/comments/332218.htmlhttp://www.aygfsteel.com/dongbule/archive/2010/09/16/332218.html#Feedback2http://www.aygfsteel.com/dongbule/comments/commentRss/332218.htmlhttp://www.aygfsteel.com/dongbule/services/trackbacks/332218.html Normal 0 7.8 ?/w:DrawingGridVerticalSpacing> 0 2 false false false MicrosoftInternetExplorer4 先感谢同事梁员外<MongoDB with Morphia>的技术分?下面是一些相关的W记,当然?在应用Morphia之前需要有MongoDB的用经?

What is Morphia?

Morphia is a lightweight type-safe library for mapping your Java objects to/from MongoDB

单的来说Morphia与MongoDB的关pd如Hibernate与关pL据库的关p? 是一个实现Java对象到MongoDB双向映射的类库?br />
下面是摘自Morphia官方的简?带有一定的q告?呵呵

Easy to use, and very lightweight; reflection is used once per type and cached.

Annotations describe mapping behavior; there are no XML files.

Provides Datastore and DAO<T,V> data access abstractions, or roll your own...

Type-safe Query support

Works with Guice, Spring, and other DI frameworks.

Has many extension points to build on

Does not store Null/Empty values (by default).

GWT support (entities are just POJOs) --(GWT ignores annotations)

Advanced mapper that allows raw conversion, void toObject(DBObject) or DBObject fromObject(Object)

下蝲 morphia.jar


jar导入到工E后,看看mongodb和morphia的初始化

初始化Mongo(MongoDB Java Api)

初始化Morphia

在mapPackage需要制定一pd的pojoc?/span>

对POJOc进行存储操?/span>

以上代码创徏了两个领域Hotel,Address,前者ؓ实体存在,有自q生命周期,后者则为内嵌在实体之中,没有独立的生命周? 关于q些注解的详l含义,以及Morphia提供的其他注解,请参见其官方文档?br />

以下说说Morphia与Spring的结?

com.***.cvus.dao.MorphiaBean 是自己封装的一个SpringBeanc?/span>

public class MorphiaBean extends Morphia {
    …
    
private Mongo mongo = null;
    
private String dbName = null;
    
public Datastore getDataStore() {
        
if (this.mongo == null || this.dbName == null) {
            
return null;
        }
        
return createDatastore(mongo, dbName);
    }

}

MorphiaBean的应?/span>

DataStrore—查询语?br />
直接ID查询:

单条件查?


DataStrore—保存\删除 语法

保存

删除



Query—复杂查?br />
FilterҎ:

获取W一个数?/span>


获取列表:



Query—排?分页

排序

分页

UpdateOperaions—更新操?br />
执行语句


updateQueryQ查询条ӞClassQQueryQ?/strong>

opsQ更新操作(ClassQUpdateOperationsQ?/strong>

opsQ?UpdateOperations Q参数的语法Q?br />
http://code.google.com/docreader/#p=morphia&s=morphia&t=Updating


@Embedded & @Reference

http://code.google.com/docreader/#p=morphia&s=morphia&t=EmbeddedAnnotation

http://code.google.com/docreader/#p=morphia&s=morphia&t=ReferenceAnnotation


----------------------------------------

by 陈于?nbsp;

QQ:34174409
Mail: chenyz@corp.netease.com



]]>
վ֩ģ壺 Ұ| ͺ| | | ˰| | | | | ɯ| | | | | | ֿ| ͨ| | ľ˹| Ľ| ˮ| ɽ| մ| | ˶| | | | | | Ȫ| Ͷ| ľ| | | ̨| »| ̨| | | °Ͷ|