`

mongodb高级查询

阅读更多
前面的博客讲了一些基本常用的操作,但实际上真正运用时还会遇见一些更高级的操作,特别是查询方面更是如此,总的来说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。

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics