0

我需要在我的网络应用程序中实现“流行关键字”,以便大多数搜索到的关键字将显示在那里。为此,我在 mongo 中创建了一个数据库。我需要从 mongo 检索数据,以便大多数出现的关键字应该排序并返回到我的页面。在 sql 中它就像, select names,count(names) from keyword_db group by names order by names;

需要java代码和mongo shell查询..

4

2 回答 2

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/

于 2012-12-07T06:02:09.983 回答
1

对于排序,您可以使用 following..1 升序和 -1 降序。

db.keyword_db.find( { names: "A" } ).sort( { user_id: 1 } )

而对于 groupBy 你可以使用聚合框架..

http://docs.mongodb.org/manual/reference/method/db.collection.group/

于 2012-12-07T05:56:40.687 回答