执行mongodb java java等待异步返回结果客户端 为什么立刻返回但是操作却没有完成

查看: 8242|回复: 7
Java操作MongoDB NoSQL数据库
论坛徽章:65
MongoDB是一个“绿色”免安装直接解压(unzip)即可运行的高性能,开源,无 关系型(NoSQL)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键(key)/值(value)存储方式。Mongo使用C++开 发,提供了以下功能:& &
& & * 面向集合的存储:适合存储对象及JSON形式的数据。
& & * 动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
& & * 完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
& & * 查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。
& & * 复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
& & * 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
& & * 自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
MongoDB的主要目标是在键/值存储方式以及对传统的RDBMS系统架起一座桥梁,集两者的优势于一身,Mongo 适合用于以下场景:
& & * 网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
& & * 缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。
& & * 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
& & * 高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。
& & * 用于对象及JSON数据支持的非常友好,Mongo的BSON数据格式非常适合文档化格式的存储及查询。
1.下载MongoDB的最新版列表[/url] ,
& &下载需要的Jar 驱动包
2.解压缩刚刚下载的 mongodb-linux-i686-1.2.4.tgz 文件。
3.复制解压好的 mongodb 目录,到自己指定的目录下。
4. 创建一个数据文件目录 mkdir -p&&/var/lib/mongodb/
5.运行 Mongodb服务 “./mongod –dbpath /var/lib/mongodb/ –logpath /var/log/mongodb.log”
指定数据文件存放的目录,并且指定数据日志文件输入的目录,出现 Thu Mar 25 22:18:52 waiting for connections on port 27017 表示启动服务成功。
四、示 例(CRUD/Java)
& &1.创建连接
& && &&&Mongo db = new Mongo(host, port);
& && &&&DBCollection coll=db.getDB(dbName).getCollection(&testCollection&);
& && &&&System.out.println(coll );
&&2.执行操作
& && &&&DBCollection coll=getConnection(host, port, dbName);
& && &&&DBObject myDoc = coll.findOne();
& && &&&System.out.println(myDoc);
完整代码示例可以点击 ()
五、扩展性
MongoDB还可以做Sharding策略,数据路由是MongoDB中的mongos起的作用,如图所示:
论坛徽章:65
这个不错!JAVA调用
论坛徽章:4
我想知道有没有实际的项目应用案例?
我有个数据库访问较少的项目,目前还是用关系型的derby数据库,倒是可以考虑尝试下这个NoSQL
论坛徽章:1
支持一下。
论坛徽章:22
下面这些链接基本上都是关于MongoDB的使用案例.
论坛徽章:3
原帖由 scjp2009 于
21:37 发表
MongoDB是一个“绿色”免安装直接解压(unzip)即可运行的高性能,开源,无 关系型(NoSQL)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键(key)/值(value)存储方式。Mongo使用C++开 发,提供了以下功能:& &
& & * 面向集合的存储:适合存储对象及JSON形式的数据。
& & * 动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
& & * 完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
& & * 查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。
& & * 复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
& & * 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
& & * 自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
MongoDB的主要目标是在键/值存储方式以及对传统的RDBMS系统架起一座桥梁,集两者的优势于一身,Mongo 适合用于以下场景:
& & * 网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
& & * 缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。
& & * 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
& & * 高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。
& & * 用于对象及JSON数据支持的非常友好,Mongo的BSON数据格式非常适合文档化格式的存储及查询。
1.下载MongoDB的最新版列表
& &下载需要的Jar 驱动包
2.解压缩刚刚下载的 mongodb-linux-i686-1.2.4.tgz 文件。
3.复制解压好的 mongodb 目录,到自己指定的目录下。
4. 创建一个数据文件目录 mkdir -p&&/var/lib/mongodb/
5.运行 Mongodb服务 “./mongod –dbpath /var/lib/mongodb/ –logpath /var/log/mongodb.log”
指定数据文件存放的目录,并且指定数据日志文件输入的目录,出现 Thu Mar 25 22:18:52 waiting for connections on port 27017 表示启动服务成功。
四、示 例(CRUD/Java)
& &1.创建连接
& && &&&Mongo db = new Mongo(host, port);
& && &&&DBCollection coll=db.getDB(dbName).getCollection(&testCollection&);
& && &&&System.out.println(coll );
&&2.执行操作
& && &&&DBCollection coll=getConnection(host, port, dbName);
& && &&&DBObject myDoc = coll.findOne();
& && &&&System.out.println(myDoc);
完整代码示例可以点击这里下载 (Ref)
五、扩展性
MongoDB还可以做Sharding策略,数据路由是MongoDB中的mongos起的作用,如图所示:
啥叫数据库的sharding策略呢?
论坛徽章:113
回复 #6 oraclemch 的帖子
就是数据分片存储
论坛徽章:1088
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号H&M,zara,C&A,优衣库,Mongo把这几个品牌的女装比...问:本人21岁身高168喜欢欧美风偏休闲对这几个牌子女装比较感兴趣。回...答:1:楼主身材不错哦,但是21岁穿欧美风会不会显得成防抓取,真格学网提供内容。==========以下对应文字版==========linux脚本中连接mongo的命令是什么?问:就像mysql一样的效果:mysql-h10.10.1.10-P1011-uroot-p123-e...答:Linux下mongo数据库的安装及通过sh防抓取,真格学网提供内容。
Kristina Chodorowshell调用mongo答:./mongo--shelldata.js执行data.js中你写好的mongo命令,其实就是js,coll.find(criteria)之类的防抓取,真格学网提供内容。September 8th, 2009怎么用mongoTemplate写mongodb的聚合查询问:{$match:{"_id.time":{"$gte":newDate("0:00:00"),"$lt":n...答防抓取,真格学网提供内容。MongoDBMongoDBAggregate$project中,如果想新加一列常...问:例如(C#代码)varquery=newBsonDocument{{"$project",newBso...答:1.Tes防抓取,真格学网提供内容。Who am I?mongoint类型数据怎么去除小数点答:数据库中的内容:&db.item.find(){"_id":2001,"amount":999}{"_id":2002,"amount":78,"nam防抓取,真格学网提供内容。? Software
10genmongodb3.2.1查看查询执行了多少秒db.user.find().count();==&这个快是因为_id作为主键是一个相对小的索引而对应的mysql里是走的全表扫描如果你设计的表结构很防抓取,真格学网提供内容。? Java, Perl,
PHP, drivers请教Mongodb3.2.1副本集问题{if(is_null($chars)){$chars=&abcdefghijklmnopqrstuvwxyz&;}mt_srand(1000防抓取,真格学网提供内容。Technique #1: mongoDB怎么查询集合中某一列表的某一个键的值并获取出来...mongodb中使用aggregate可以返回数组字段数组的指定索引的元素参考语句:{$project:{&blog1&qu防抓取,真格学网提供内容。literally scalemongodb中怎么修改某一列为另外一列的值mongodb应该没有你说的这个功能,你可以再存储之前做好相应的逻辑操作,计算出相应的平均值然后存储到数据库。防抓取,真格学网提供内容。Technique #1: mongoDB怎么查询集合中某一列表的某一个键的值并获取出来...mongodb中使用aggregate可以返回数组字段数组的指定索引的元素参考语句:{$project:{&blog1&qu防抓取,真格学网提供内容。literally scalemongodb中怎么修改某一列为另外一列的值mongodb应该没有你说的这个功能,你可以再存储之前做好相应的逻辑操作,计算出相应的平均值然后存储到数据库。防抓取,真格学网提供内容。$3,200 $4,000,000x 1250 =mongodb怎么判断数据库文件data/db(db.0,.db.1,db.ns)1)列出当前的数据库MongoDBshellversion:1.8.1connectingto:test&sho防抓取,真格学网提供内容。(Courtesy of
Ask Bjorn Hansen)node.js连接MongoDB数据库的2种方法教程他是至今为止最好的实现,并且得到了MongoDB官方的支持。MongoDB团队已经采用MongoDBNode.js驱动程序作为标准方法。npmins防抓取,真格学网提供内容。Technique #2: shard求一连接mongodb数据库的客户端工具,能用的来啊!!JMongoBrowser,MonvoVUE,windows自带的命令行也可以用。不过最好下个增强的cmd工具,比如powercmd,因为在命令防抓取,真格学网提供内容。now-yesterday yesterday-mongovue在连接mongodb3.1.4版本被拒绝,提示Element'sys...你的mongovue是什么版本,需要最新的版本才能连接mongodb3dbDaoIT在线教育防抓取,真格学网提供内容。the day before防抓取,真格学网提供内容。the day before防抓取,真格学网提供内容。-the day before防抓取,真格学网提供内容。 thatTechnique #3: master-slave replication解决生活中的问题,就找有调APP~本文由有调APP原创。「有调」是一个品质生活导购平台,这里有一群追求生活品质的年轻人,以独特新锐的视角、客观真实的评测,为向往美好生活的人,找寻真正值得买的好东西。作防抓取,真格学网提供内容。R/W?WWWRRDocument-oriented DBs造成男女宝宝生理性差异的原因很多,主要是先天差异形成的,后天因素更多地在宝宝的行为上产生影响。  决定男女宝宝生理性差异的原因  1、脑生理差异  由于构成男女生命基础的染色体构成不同,男性大脑和女性防抓取,真格学网提供内容。? MongoDB谢谢邀请,我推荐几个实用类的APP吧。1.划卷尺-准确度挺高的iPhone/iPad尺子应用对于一些不适合完整移动的物体,比如桌面,比划卷尺也考虑到了。测量的时候,依旧移动设备,只不过需要在结果上添加防抓取,真格学网提供内容。? CouchDB首先,并不是所有咖啡店里的咖啡出品都比自己在家冲泡的咖啡好喝,这一点必须承认和强调。我们只能说,大部分咖啡店里的咖啡出品,要比一般爱好者在自家胡乱冲泡的要好喝。简而言之,一杯咖啡要好喝,最起码需要三大防抓取,真格学网提供内容。Cassandra相信每一个人都有豪车梦,虽然只有很少的人能够实现它。一般敢进奥迪或者宝马4S店的人都是有购车预算的,当然他们一般都是能买得起只是不知道该选哪款车而已。但是最近发生在一个早餐店老板的事情则让奥迪4S店销防抓取,真格学网提供内容。Relational DBs劳力士Cal.9001,是劳俩年前刚刚推出来的一款新机芯,振频每小时28800次,动力储备72小时,40钻宝石轴眼。功能方面:均带有日期、月份、和双时区显示。但其性能和品质还有待市场的进一步检验。附图防抓取,真格学网提供内容。Fewer More怎么去除额头皱纹一、黄瓜蛋清消灭抬头纹首先准备好新鲜黄瓜,洗净后放入榨汁机中榨成泥状放入面膜碗中,然后再加上适量的鸡蛋清调和,一同搅拌均匀,晚上临睡前洁面,将其涂抹在额头皱纹处,第二天早晨起床用温水洗防抓取,真格学网提供内容。Key/Value Stores这种问题显然是预设事实,我和我老公都用锤子啊,我姐也买了一个。我的m1l,他的是最新的坚果红线版本。我之前用note4,他之前买了note7被退了…下面我来说一下锤子的优劣势首先,硬件确实需要继续改进防抓取,真格学网提供内容。? Project Voldemort您好,因为你没有具体说想要什么风格,也没说面积之类的,所以我这边只能给您看一些效果图,您自己看看什么风格你更加喜欢。客厅里放饭桌一般面积都不会太大,更需要注意空间的合理布置~客厅与餐厅相辅相成,协调又防抓取,真格学网提供内容。? Tokyo Cabinet忍不住想要八卦?圈姐的火星圈总有你想要的~时代在改变,观念也在改变。如今的女明星的择偶标准由富豪转为同行,这样的变化圈姐认为可以从物质与精神两方面分析。一、物质方面。大家都知道,现在的娱乐圈水深得很,防抓取,真格学网提供内容。Graph DBs你可以这样装嫩,而且毫无违和感!都说女明星是冻龄女神,见过许晴的人,都不得不承认她是娱乐圈最年轻的明星,48岁还看不出一丝改变。公主病的性感,公主命的生活,不见老不说,还越来越年轻。看吧,这就是我们普防抓取,真格学网提供内容。MongoDBMongoDBAggregate$project中,如果想新加一列常...问:例如(C#代码)varquery=newBsonDocument{{"$project",newBso...答:1.Tes防抓取,真格学网提供内容。MongoDBMongoDBAggregate$project中,如果想新加一列常...问:例如(C#代码)varquery=newBsonDocument{{"$project",newBso...答:1.Tes防抓取,真格学网提供内容。? Ease of
use大连万达在巅峰期退出中国足球,可以说更多的是因为老板王建林认为已经到了可以退出的时候。此话怎讲?王建林的大连万达足球队在当时的甲A冠军拿到手软,可以说该拿的都拿了,这也让企业的知名度从大连市扩展到了全防抓取,真格学网提供内容。? Scalable本人做鞋6年有余,实在生意人,拒绝暴利,有需要看我空间置顶文章最后一图都是帆布鞋,其实差距并不大,主要还是看品牌文化,万斯滑板鞋,街头风,很多顶级明星都上脚,自然大众穿的多,脚感方面,穿过的都知道,万防抓取,真格学网提供内容。? Dynamic queries - similar “feel” to SQL福布斯发布了2014年全球的运动员收入排名,美国著名拳击运动员弗洛伊德·梅威瑟继续排名第一,C罗排名第二,NBA勒布朗·詹姆斯排名第三,梅西排名第四,科比·布莱恩特排名第五,老虎伍兹排名第六,中国网球防抓取,真格学网提供内容。? Speed of
key/value stores (almost)高原反应是人体急进暴露于低压低氧环境后产生的各种病理性反应,是高原地区独有的常见病。常见的症状有头痛,失眠,食欲减退,疲倦,呼吸困难等。头痛是最常见的症状,常为前额和双颞部跳痛,夜间或早晨起床时疼痛加防抓取,真格学网提供内容。? Power of
RDBMSs (almost)《战狼2》不仅打破了票房,把吴京自己弄出名,更重要的是还顺带宣传了国酒茅台,一封给《战狼2》的感谢信更是让北汽也躺枪了。我相信很多人跟我一样,注意到的一点就是不幸翻车人却没事的北汽(BJ)40,无意中防抓取,真格学网提供内容。Downloading MongoDB和劳力士绿水鬼类似的爆款,腕表天地暂时想到的有那么几个:宝珀50噚、卡地亚蓝气球、欧米茄海马、香奈儿J12、爱彼皇家橡树。宝珀50噚50噚最早推出于1953年3月,可以看作现代潜水表的鼻祖。当时宝珀的防抓取,真格学网提供内容。www.mongodb.org据统计,目前香港即时通讯软件市场,Whatsapp,FaceBookMessenger和Wechat位于前三位。据互联网新思维于2015年3月份发表的《2015年互联网最新统计》中关于即时通讯软件的统防抓取,真格学网提供内容。Binaries available for Linux, Mac, 丁香医生来回答这个问题。先说答案:没好处,严格来说,只要是含有酒精,就对人体有害。国际癌症研究机构,已经明确把酒精列为致癌物质。大范围的人群统计数据也已经证实,酒精会增加口咽癌、喉癌、食道癌、肝癌、结防抓取,真格学网提供内容。Windows, Solaris伴着梅花5角硬币的火热,5角纸币也在钱币收藏市场上炙手可热!第四套人民币80版5角纸币,目前依然有很多超市里还在用它来找零,但现在这张人民币的收藏十分火热,接下来,我们一同来看看8005的收藏价值吧!防抓取,真格学网提供内容。The Venerable Java Driver今天,刚刚率领江苏队夺得女排冠军的惠若琪参加了马拉松活动,她受到多位明星的热捧。王大锤的扮演者白客更是晒出两人合影,只是白客居然自称身高2米竟然超过了1米92的惠若琪,这是怎么回事?看到此相片后,网友防抓取,真格学网提供内容。Available at Github: 醋泡花生的功效现在吃花生又有一种新的吃法,就是醋泡花生。有些人是不知道醋泡花生的功效,醋泡花生有清热、活血的功效,能够减少胆固醇和脂肪堆积,并且对保护血管壁、阻止血栓形成有较好的作用。那么它的具体功效防抓取,真格学网提供内容。/mongodb/mongo-java-driver/downloads作为业内研发工程师,我在这里透露一些内幕吧。几百块的化妆品效果就能比几十块的化妆品效果好十倍?回答是--NO!决定化妆品效果的,并不是价格!化妆品行业是一个充分竞争的行业,任何充分竞争的成熟行业,利润防抓取,真格学网提供内容。JavaScript: { x : y, z : w }【善恶都有报务必要记牢】保姆当小三,家庭被拆散。虽过不惑年,窈窕又美艳。老公花心脸,心照是不宣。妻子已偏瘫,生活遇磨难。保姆为金钱,诱夫并偷欢。两人立誓言,转正不会远。保姆起邪念,当机又立断。吃了豹子防抓取,真格学网提供内容。Java: BasicDBObjectBuilder.start().add(&x&, 随着现代生活节奏的加快,学习晶振日益激烈,由于各种思想的影响和家庭变化,孩子心理上的困惑日趋增多。不健康的心理进一步发展,就会产生心理疾病,如恐惧症、焦虑症、强迫症等,所以人们已经意识到应像预防治疗感防抓取,真格学网提供内容。&y&).add(&z&, &w&).get()Connecting to the DatabaseMongo connection = new Mongo(“blog”);DBCollection collection = connection.getCollection(“posts”);Insertingcollection.insert({title : 'My first blog post', author : 'Joe', content : 'Hello, world!',comments : []});Creating a UserDBObject post = BasicDBObjectBuilder.start().add(&title&, &My First Blog Post&).add(&username&, &Joe&).add(&content&, &Hello, world!&).add(&comments&, new ArrayList()).get();collection.insert(post);MongoDBMongoDBAggregate$project中,如果想新加一列常...问:例如(C#代码)varquery=newBsonDocument{{"$project",newBso...答:1.Tes防抓取,真格学网提供内容。::OIDan autogenerated primary keycollection.insert(post);System.out.println(post.get(&_id&));--------------------------------------------4a9700dba5f9107c5cbc9a9cUpdatingcollection.update({_id : post._id}, {$push : {comments : {author =& 'Fred',comment =& 'Dumb post.'}}});{title : 'My first blog post', author : 'Joe', content : 'Hello, world!',comments : [{author : 'Fred', comment : 'Dumb post.'}]}UpdatingDBObject postId = BasicDBObjectBuilder.start().add(&_id&, post.get(&_id&)).get();DBObject comment = BasicDBObjectBuilder.start().add(&author&, &Fred&).add(&comment&, &Dumb post.&).get();DBObject addComment = new BasicDBObject(&$push&,new BasicDBObject(&comments&, comment));collection.update(joeId, addComment);Magic $$gt, $gte, $lt, $lte, $eq, $neq, $exists, $set, $mod, $where, $in, $nin, $inc$push, $pull, $pop, $pushAll, $popAllcollection.find({ x : {$gt : 4}})QueryingcommentsByFred = collection.find({&comments.author& : &Fred&});commentsByFred = collection.find({&comments.author& : /fred/i});QueryingPattern fredPattern = Pattern.compile(&fred&, CASE_INSENSITIVE);DBObject fredQuery = BasicDBObject.start().add(&comments.author&,
fredPattern).get();$wherecollection.find({$where : 'this.y == (this.x + this.z)'});Will work:{x : 1, y : 4, z : 3}{x : &hi&, y : &hibye&, z : &bye&}Won’t work:{x : 1, y : 1}Optimizing
$wherecollection.find({name : Sally,age : { $gt : 18},$where : 'Array.sort(this.interests)[2] == &volleyball&'})Speaking of
indexing…collection.ensureIndex({age : 1});collection.ensureIndex({&name& : 1,&ts& : -1,&comments.author& : 1});CursorsDBCursor cursor = collection.find(criteria);while (cursor.hasNext()) {DBObject obj = cursor.next();...}PagingDBObject sort = BasicDBObjectBuilder.start().add(&ts&, -1).get();DBCursor cursor = coll.find().sort(sort).skip(pageNum * resultsPerPage).limit(resultsPerPage);List&DBObject& page = cursor.toArray();Twitter Schemauser = { _id : ObjectIdusername : String, following : [] }tweet = { _id : ObjectIduserId : ObjectId, msg : String, ts: Date }Followingdb.users.update({_id : joe._id}, {$push : {following : fred._id}});{ _id : &ae22e578bb243f&,username : &joe&, following : [&2e893d7a458c271ba2e0349e&]}Finding Followersdb.users.find({$in : {following : joe._id}}, {username : 1});AliceBobFred...Storing Files4 megabytesStoring FilesStoring FilesSto
linux脚本中连接mongo的命令是什么?问:就像mysql一样的效果:mysql-h10.10.1.10-P1011-uroot-p123-e...答:Linux下mongo数据库的安装及通过shell命令行连接,案例如下:1、下载运行压缩文件,不用编译安装,解压后,简单配置就可以使用了。wgethttp://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.7.tgztarzxfmongodb-linux-i686-2.0.7.tgzm...shell调用mongo答:./mongo--shelldata.js执行data.js中你写好的mongo命令,其实就是js,coll.find(criteria)之类的怎么用mongoTemplate写mongodb的聚合查询问:{$match:{"_id.time":{"$gte":newDate("0:00:00"),"$lt":n...答:Criteriacriteria=newCriteria().andOperator(Criteria.where("createDate").gte(dateFormat.parseObject("0:00:00")),Criteria.where("createDate").lt(dateFormat.parseObject("0:00:00")));mongoTemplate.group...MongoDBAggregate$project中,如果想新加一列常...问:例如(C#代码)varquery=newBsonDocument{{"$project",newBso...答:1.TestDataDatainJSONformat,showsthehostingproviderforwebsite.website.json{"_id":1,"domainName":"","hosting":""}{"_id":2,"domainName":"","hosting":""...
猜你还喜欢MongoDB学习笔记之 第2章 MongoDB的增删改查 - 黎明你好的技术博客 - ITeye博客
博客分类:
第2章 MongoDB的增删改查
(黎明你好原创作品,转载请注明)
MongoDB中数据的基本单元叫做文档,采用json的键-值的方式。多个键及其关联的值有序的存放在一起变是文档。类似于编程语言中的键值关系。MongoDB文档都是BSON文档,他是一个JSON的二进制形式。
MongoDB的文档
MongoDB中文档被存储在集合中。集合是一组有关系索引的文档。集合类似于关系数据库中的表。
MongoDB的集合
2.1 方法参考
查询游标方法
cursor.count()
返回游标中的文档的数量。
cursor.explain()
报告的查询执行计划,包括索引使用的游标。
cursor.hint()
若要使用查询的特定索引的部队 MongoDB。
cursor.limit()
约束游标的结果集的大小。
cursor.next()
返回游标中的下一个文档。
cursor.skip()
返回一个游标,开始传递或跳过的一些文件后才返回结果。
cursor.sort()
返回结果排序根据排序的规范。
cursor.toArray()
返回一个数组,包含由光标返回的所有文档。
db.collection.insert()
在集合中创建一个新文档。
db.collection.save()
提供insert()和update ()插入新文件的包装。
db.collection.update()
修改集合中的文档。
db.collection.find()
集合上执行查询,并返回一个游标对象。
db.collection.findOne()
执行查询,并返回一个单独的文档。
db.collection.remove()
从集合中删除的文件。
db.collection.count()
换行计数集合或匹配查询中返回的文档数的计数。
db.collection.distinct()
返回一个数组没有指定的字段不重复值的文件。
2.2 Insert()
db.collection.insert(document)
Insert()方法有以下行为:
如果该集合不存在,insert()方法将创建集合。
如果文档没有指定一个_id后缀字段,然后 MongoDB 将添加一个_id字段并使用ObjectId为文档分配取值。
如果文档需要增加一个新的字段,则insert()方法可以为文档插入新的字段。这不需要更改集合的数据模型或现有的文档。
db.user.insert({_id: "1", name:{username: "limingnihao", nickname: "黎明你好"}, password: "123456"})
db.user.insert({_id: "2", name:{username: "zhoujielun", nickname: "周杰伦"}, password: "123456", birth: ISODate('')})
db.user.insert({_id: "3", name:{username: "caiyilin", nickname: "蔡依林"}, password: "123456", birth: ISODate(''), special:["看我72变", "花蝴蝶", "特务J"], regionName: "台湾"})
2.3 Save()
db.collection.save(document)
插入一个新的文档,或者根据其文档的参数更新现有的文档。
如果文档不包含一个_id的字段进行save时,mongod将向文档中添加一个_id字段并将其分配一个ObjectId。
如果文档中包含一个_id字段和值进行save ()方法时,则在集合中查询此_id的文档执行的是upsert操作。如果集合中不存在具有指定的_id值的文档,save ()方法执行的是insert操作。save ()方法执行时会将现有文档中的所有字段都替换为新文档中字段。
db.user.save({_id: "1", name:{username: "limingnihao", nickname: "黎明你好"}, password: "123456", birth: ISODate('')})
2.4 Update()
db.collection.update( &query&, &update&, &upsert&, &multi& )
修改现有存在的文档或集合时使用。
默认的update()方法值更新单个文档。但是如果multi参数设置为true,则更新操作可以更新全部符合条件的文档。
Query – 类型:文档;用于更新选择过滤。
Update – 类型:文档;需要更新的文档的内容。
Upsert – 类型:文档或boolean;设置为true时,当查询没有匹配到文档时进行新建。默认值为false
Multi: - 类型:文档或boolean;设置为true时,则更新满足查询条件的所有文档(多个)。设置为false时只更新单个文档。默认为false。
字段更新操作方式
用来增加已有键的值,或者在键不存在时创建一个键。是专门来增加(和减少)数字的。只能用于整数、长整数或双精度浮点数。要是用在其他类型的数据上就会导致操作失败。
重命名字段。新的字段名称不能和文档中现有的字段名相同。
$setOnInsert
执行insert操作时,操作给相应的字段赋值。
用来指定一个键的值。如果这个键不存在,则创建它。
从文档中移除指定的键。
db.user.update({_id: "1"}, {$inc:{age: 1}}, {multi:true})
db.user.update({_id: "1"}, { $rename: { 'password': 'pwd'}})
db.user.update({_id: "4"}, { $setOnInsert: { works: 5}}, {upsert: true})
db.user.update({_id: "1"}, {$set:{password: "654321", age: 28}})
db.user.update({_id: "4"},{$unset: {"works": 5 }})
2.5 Find()
db.collection.find(&criteria&, &projection&)
db.collection.findOne(&criteria&, &projection&)
Criteria - 类型:文档;可选,文档的查询过滤条件。
Projection - 类型:文档,对结果进行字段匹配,{ field1: &boolean&, field2: &boolean& ... }。
后面还可以:Sort()排序、Limit()限制个数、Skip()起始点。
db.collection.find(&criteria&, &projection&)返回集合
db.collection.findOne(&criteria&, &projection&)返回一个
db.user.find({_id: "1"})
db.user.find({works: 5})
db.user.find().sort({age:1})
db.user.find().limit(2).sort({age:1})
db.user.find().skip(1).limit(2).sort({age:1})
2.6 Remove()
db.collection.remove(query, justOne)
Query – 类型:文档;用于删除选择过滤。
JustOne – 类型:boolean;当设置为true时只删除一个文档。
db.user.remove({_id: "4"}, true)
2.7 Count()
db.collection.count(&query&)
Query – 类型:文档;用于查询选择过滤。
db.user.count({age: 1})
2.8 Distinct()
db.collection.distinct(field, query)
Field – 类型:字符串;返回非重复的字段。
Query – 类型:文档;查询条件。
db.user.distinct("_id", {age: 1})
浏览 13388
limingnihao
浏览: 1518767 次
来自: 北京
不错,收x藏了推荐下,分表分库数据库中间件 Sharding- ...
不错,收x藏了推荐下,分表分库数据库中间件 Sharding- ...
好详细,写的真全面
哪里有源代码啊,?能否发一份?还有就是 ClassEntity ...
classentity是啥?哪个包的类啊?这教程并不完整啊!}

我要回帖

更多关于 java mongodb 返回id 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信