mongodb高级查询 博客分类: mongodb MongoDB
程序员文章站
2024-03-15 12:14:59
...
前面的博客讲了一些基本常用的操作,但实际上真正运用时还会遇见一些更高级的操作,特别是查询方面更是如此,总的来说mongodb很不错,但是对于java driver for mongodb,我不是很满意,代码写得有些乱,设计思路有些不清晰,文档也不完善,例子也非常的简单,因此试验起来很是恼火,都有放弃的想法,但最终还是坚持了下来,趁这几天对它还有点激情,赶快写博客,因为这激情不是天天都有的。下面就讲讲mongodb的高级查询。
高级查询主要讲两点,一是模糊查询,二是嵌套查询。
模糊查询主要涉及到一些系统函数,明白了就简单了。见下面例子:
上面的代码意思是说,查询年龄为20或22岁的人。&in表示包含的意思,与其它数据库函数类似。需要注意的是后面的new Object[],&in必须跟数组,但是不能是int,long等数组,这一点很不理解,这些搞Java驱动的人怎么想的,利用反射很容易判断的,唉,忍了!
知道怎么用以后,还需要知道的是系统到底还有哪些可用的函数,本来想一一列举的,但实在有点多,还是算了,更详细的资料可在官方上查看:
http://www.mongodb.org/display/DOCS/Advanced+Queries
下面再讲一下嵌套查询,这个,文档上没说,试了半天,没试出来,一直让自己很灰心,一个偶然的机会看见官方上关于嵌套查询的用法,得到了灵感,总算明白怎么用了,见下面代码:
上面代码的意思是查询对象中包括user对象,而且user对象的name必须等于qiuqiu。
虽然上面的两段代码很短,但的确是花了本人很些时间,来之不易,当然也可能是本人太愚钝了。
高级查询主要讲两点,一是模糊查询,二是嵌套查询。
模糊查询主要涉及到一些系统函数,明白了就简单了。见下面例子:
.... 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高级查询 博客分类: mongodb MongoDB
-
【赵强老师】使用MongoDB的命令行工具:mongoshell 博客分类: MongoDB mongodbnosql数据库sql
-
mongodb基本操作 博客分类: mongodb MongoDBSSH企业应用数据结构Hibernate
-
mongodb基本用法 博客分类: mongodb MongoDBHibernateMySQLRuby
-
【赵强老师】MongoDB的inMemory存储引擎 博客分类: MongoDB mongodbnosqlredis数据库
-
MongoDB查询性能验证及优化 博客分类: java;nosql; mongodb全文检索
-
MongoDB查询性能验证及优化 博客分类: java;nosql; mongodb全文检索
-
mongodb ,redis,memcache区别: 博客分类: web webredismongodbmemcachedb
-
MongoDB与Mysql常用命令解释 博客分类: 数据库 MongoDbNosqlMysql常用命令
-
mongodb注解详解 博客分类: java mongodb