`
happy90
  • 浏览: 61409 次
  • 性别: Icon_minigender_1
  • 来自: 中国
社区版块
存档分类
最新评论

MongoDB里面怎么 查最值

阅读更多

怎么在MongoDB里面怎么 查最值  就好像SQL语句的select MAX(row) form ....


我现在知道了,现在拿出来和大家分享一下吧  



DBObject ref = new BasicDBObject();

ref.put("auth_id", authId);

ref.put("weibo_type", weiboType);


DBObject keys = new BasicDBObject("weibo_id", 1);


DBObject orderBy = new BasicDBObject("weibo_id", -1);// -1标示降序 1表示升序


DBCursor dbc = statusColl.find(ref, keys).sort(orderBy).limit(1);


DBObject dbo = null;

try {

dbo = dbc.next();

} catch (NoSuchElementException e) {

return -1L;

}

return (Long) dbo.get("weibo_id");


大概就是上面那个样子啦,根据您自己的业务需求,写出符合条件的代码吧,主要就是find()和limit()这两根函数而已,下面的这个大家可以无视,我是写给自己看的



List<Status> list = new LinkedList<Status>();

DBObject ref = new BasicDBObject();


ref.put("user_id", userId);


DBObject orderBy = new BasicDBObject("create_at", -1); // -1标示降序 1表示升序


DBCursor res = homePagesColl.find(ref).sort(orderBy).skip(

(pageNumber - 1) * nPerPage).limit(nPerPage);


while (res.hasNext()) {

Object obj = res.next().get("weibo_content");

Status sta = new Status(new JSONObject(obj.toString()));

list.add(sta);

}

return list;

 

分享到:
评论
3 楼 kimmking 2011-04-12  
happy90 写道
2楼的思路是先降序排序,然后取第一个,是吗?
   难道MongoDB里面没有直接取MAX的功能吗?...

对,没有sql里的 max。~

sort-limit本身,这个不就是max吗?

-----------------
ps: mongodb的find里有max/min 语法,
不过其相当于<= 和 >=

referred: http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers
2 楼 happy90 2011-04-12  
2楼的思路是先降序排序,然后取第一个,是吗?
   难道MongoDB里面没有直接取MAX的功能吗?...
1 楼 kimmking 2011-04-12  
<p>sort-limit</p>
<pre name="code" class="java">Object obj = null;
if (tableName == null)
tableName = IConstants.MONITOR;

BasicDBObject query = conditionToBasicDBObject(condition);

DBCursor cursor = db.getCollection(tableName).find(query).sort(
new BasicDBObject(perprotyName, -1)).limit(1);
while (cursor.hasNext()) {
DBObject dbo = cursor.next();
obj = dbo;
break;
}
cursor.close();

return obj;</pre>
<p> </p>
<p> </p>
<p> </p>

相关推荐

Global site tag (gtag.js) - Google Analytics