欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mongodb高级查询 博客分类: mongodb MongoDB 

程序员文章站 2024-03-15 12:14:59
...
前面的博客讲了一些基本常用的操作,但实际上真正运用时还会遇见一些更高级的操作,特别是查询方面更是如此,总的来说mongodb很不错,但是对于java driver for mongodb,我不是很满意,代码写得有些乱,设计思路有些不清晰,文档也不完善,例子也非常的简单,因此试验起来很是恼火,都有放弃的想法,但最终还是坚持了下来,趁这几天对它还有点激情,赶快写博客,因为这激情不是天天都有的。下面就讲讲mongodb的高级查询。

高级查询主要讲两点,一是模糊查询,二是嵌套查询。

模糊查询主要涉及到一些系统函数,明白了就简单了。见下面例子:

....
DBObject in = new BasicDBObject("$in", new Object[]{20,22});
		
DBObject user = new BasicDBObject();
user.put("age", in);
......


上面的代码意思是说,查询年龄为20或22岁的人。&in表示包含的意思,与其它数据库函数类似。需要注意的是后面的new Object[],&in必须跟数组,但是不能是int,long等数组,这一点很不理解,这些搞Java驱动的人怎么想的,利用反射很容易判断的,唉,忍了!

知道怎么用以后,还需要知道的是系统到底还有哪些可用的函数,本来想一一列举的,但实在有点多,还是算了,更详细的资料可在官方上查看:

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

下面再讲一下嵌套查询,这个,文档上没说,试了半天,没试出来,一直让自己很灰心,一个偶然的机会看见官方上关于嵌套查询的用法,得到了灵感,总算明白怎么用了,见下面代码:

....
DBObject query = new BasicDBObject();
query.put("user.name", "qiuqiu");
.......


上面代码的意思是查询对象中包括user对象,而且user对象的name必须等于qiuqiu。

虽然上面的两段代码很短,但的确是花了本人很些时间,来之不易,当然也可能是本人太愚钝了。

相关标签: MongoDB