我需要在我的网络应用中实现“热门关键字”,这样大多数搜索过的关键字都会显示在那里。为此我已经在mongo中创建了一个数据库。我需要从mongo中检索数据,以便主要出现的关键字应该排序并应该返回到我的页面。在sql中它就像,
select names,count(names) from keyword_db group by names order by names;
需要java代码和mongo shell查询..
答案 0 :(得分:3)
你可能想尝试mongo shell查询(我按降序排序:
db.keyword_db.aggregate ( [
{ $group: { _id: "$names", count: { $sum: 1 } } },
{ $sort: { count: -1 } } ] )
对于Java版本:
DBCollection myColl = db.getCollection("keyword_db");
// for the $group operator
DBObject groupFields = new BasicDBObject( "_id", "$names");
groupFields.put("count", new BasicDBObject( "$sum", 1));
DBObject group = new BasicDBObject("$group", groupFields );
// for the $sort operator
DBObject sortFields = new BasicDBObject("count", -1);
DBObject sort = new BasicDBObject("$sort", sortFields );
// run the aggregation
AggregationOutput output = myColl.aggregate(group, sort);
System.out.println( output.getCommandResult() );
以下页面也可以帮助您:
http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/
答案 1 :(得分:1)
对于排序,您可以使用以下..1表示升序,-1表示desc。
db.keyword_db.find( { names: "A" } ).sort( { user_id: 1 } )
和groupBy您可以使用聚合框架..
http://docs.mongodb.org/manual/reference/method/db.collection.group/