2014-02-23 3 views
-1

У меня есть вопрос, так как у меня есть коллекция, в которой хранятся данные. В каждой записи есть дата, в которую была добавлена ​​коллекция. Мой вопрос: мне нужно получить, сколько предметов было добавлено за день. Я нашел запрос на веб-странице MongoDB:MongoDB java query

db.orders.find ({ord_dt: {$ gt: new Date ('01/01/2012) ')}}) .count()

Я пишу все на Java и понятия не имею, как это сделать. Пожалуйста, будьте снисходительны, я начал играть с MongoDB неделю назад. Любая помощь очень ценится.

EDIT: Я нашел Монго агрегирующего нить на переполнение стека, в котором пользователь хочет подсчитать количество записей на минуту, как я хочу, чтобы сосчитать их, например, каждый день я предполагаю, что это должно выглядеть следующим образом:

db.so.insert({ date: new ISODate("2013-08-05T15:24:15") }); 
db.so.insert({ date: new ISODate("2013-08-05T15:24:19") }); 
db.so.insert({ date: new ISODate("2013-08-05T15:24:25") }); 
db.so.insert({ date: new ISODate("2013-08-05T15:24:32") }); 
db.so.insert({ date: new ISODate("2013-08-05T15:24:45") }); 
db.so.insert({ date: new ISODate("2013-08-05T15:25:15") }); 
db.so.insert({ date: new ISODate("2013-08-05T15:25:15") }); 

db.so.aggregate([ 
    { $group: { 
     _id: { 
      y: { '$year': '$date' }, 
      m: { '$month': '$date' }, 
      d: { '$dayOfMonth': '$date' }, 
     }, 
     count: { $sum : 1 } 
    } } 
]); 

Однако не знаю, с чего начать с реализации Java. Любые советы, пожалуйста? :(

+0

Как следует вывод выглядеть? – hgoebl

+0

выход должен быть только Int, поэтому я хочу для получения количества предметов, добавленных в определенный день (для целей статистики) – silvestrairwave

+0

http://stackoverflow.com/questions/15657501/how-to-aggregate-by-date-when-a-full-timestamp-is- дана-в-агрегации-рамки. Что касается Java, вы должны прочитать несколько руководств, это легко, и вы справитесь с этим. – hgoebl

ответ

3

вам не нужны поля даты также, чтобы определить, сколько элементов добавляются на какую дату?

final MongoClient mongoClient = new MongoClient(); 
    final DB db = mongoClient.getDB("DB_NAME"); 
    final DBCollection collection = db.getCollection("COLLECTION_NAME"); 

    final Map<String, Object> groupIdMap = new HashMap<String, Object>(); 
    groupIdMap.put("year", new BasicDBObject("$year", "$date")); 
    groupIdMap.put("month", new BasicDBObject("$month", "$date")); 
    groupIdMap.put("day", new BasicDBObject("$dayOfMonth", "$date")); 

    final DBObject groupIdFields = new BasicDBObject("_id", new BasicDBObject(groupIdMap)); 

    groupIdFields.put("count", new BasicDBObject("$sum", 1)); 
    final DBObject group = new BasicDBObject("$group", groupIdFields); 

    final DBObject projectFields = new BasicDBObject("_id", 0); 
    projectFields.put("year", "$_id.year"); 
    projectFields.put("month", "$_id.month"); 
    projectFields.put("day", "$_id.day"); 
    projectFields.put("count", 1); 
    final DBObject project = new BasicDBObject("$project", projectFields); 

    final AggregationOutput aggregate = collection.aggregate(group, project);