在MongoDB的使用中,我们有时候为了提高效率和减小对内存的占用会指定返回的字段,这样就让只返回指定的字段的值,其他字段的值都不返回,那么这个在MongoDB中有一个特定的查询方式。
第一个 ref object for which to search
第二个 keys fields to return
mongo的java驱动里提供一些find方法,其中一个find方法参数如下
DBCursor find( DBObject ref , DBObject keys )
那么这里ref是指定你要进行查询的条件,如果不限制查询条件可以直接传入一个new BasicDBObject().而keys是指定要返回的字段。那么这个如何使用,下面给出一段实体的代码示例:
BasicDBObject keys = new BasicDBObject();
keys.put("_id", 1);
keys.put("name", 1);
keys.put("age", 1);
DBCursor cursor = mongoTemplate.getCollection("people")
.find(new BasicDBObject(), keys)
.addOption(Bytes.QUERYOPTION_NOTIMEOUT);
这样的话在返回的cursor中可以将其转成people对象,然后只有name和age这两个字段有值,其他的一些信息比如说weight,sex等就都为null。使用起来是不是很方便。
PS:最后的
.addOption(Bytes.QUERYOPTION_NOTIMEOUT) 是为了让这个游标不超时,如果你的数据集比较大你处理的时间比较长时就需要指定这个,否则会中途就突然断掉,因为超时被回收了,使用这个就一定要注意使用的最后一定要调用close()函数进行关闭,否则将一直占用系统资源。