【MongoDB】MongoDB只返回指定的字段的值 和 设定超时项

转载 2016年08月30日 11:15:59
在MongoDB的使用中,我们有时候为了提高效率和减小对内存的占用会指定返回的字段,这样就让只返回指定的字段的值,其他字段的值都不返回,那么这个在MongoDB中有一个特定的查询方式。

mongo的java驱动里提供一些find方法,其中一个find方法参数如下

DBCursor find( DBObject ref , DBObject keys )  
   第一个 ref object for which to search
   第二个 keys fields to return

那么这里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()函数进行关闭,否则将一直占用系统资源。

相关文章推荐

如何在Mongodb中实现数据超时自动删除功能?

在工作过程中,我们难免会遇到这样的问题,我们想保存一些数据,但是我们对这些数据的要求并不高,有时候往往只是想要某个时间范围内的数据,比如我们如果永远只关心从当前时间往前推半年内的数据特性,那么我们就不...

MongoDB 查询超时异常的原因及解决办法

在对超过百万条记录的集合进行聚合操作时,偶尔会发生Read timed out 异常,本文分析了ConnectionTimeOut和SocketTimeOut的区别,并提出该问题的解决办法。 ...

MongoDB常用操作一查询find方法db.collection_name.find()

MongoDB常用操作 一、查询 find方法 db.collection_name.find(); 查询所有的结果: select * from users...

java操作mongodb,返回某个文档的指定字段

数据库脚本: db.status.save({"name":"xph"}); db.status.save({"name":"jzm", "age":"1000"}); ...

spring-mongodb返回指定字段

spring-mongodb-data 返回指定字段

【Mongodb】aggregate限制返回字段

使用$project即可 db.xx.aggregate({$project:{_id:1}}) db.xx.aggregate({$match:{opTime:{$gt:1475091390000...

mongodb 批量查询 输出指定字段

本文介绍的是mongodb 批量查询指定输出字段 /** * * @param key * 请求字段 * @param value * ...

Mongodb 3.2 Java 显示指定字段 条件查询 官方

MongoDB Driver  Tutorials  Read Operations Find Operations Find operations retrieve document...

mongodb中根据集合中的字段关系返回查询结果

在工作中同事遇到个问题问我,我竟然一时还真不知道怎么处理,问题如下所示: 描述:有个积分表,用于记录用户的一些积分情况,其中有两个字段,score用于记录用户当前积分,totalscore用于记录用...

亿万数据量级mongoDB中高效查找同一字段的所有不同值集合

亿万数据量级mongoDB中高效查找同一字段的所有不同值集合
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)