Mudanças entre as edições de "Query de MongoDB agregando por mês e ano"
De Basef
(Criou página com 'Query do Mongo: <source lang="javascript"> db.collection.aggregate( {$project : { year : {$year : "$createdAt"}, month : {$month : "$createdAt"} }}...') |
|||
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
+ | Segue abaixo como agregar a collection "collection" por mês e ano (pelo campo "createdAt"). | ||
+ | |||
Query do Mongo: | Query do Mongo: | ||
Linha 13: | Linha 15: | ||
) | ) | ||
</source> | </source> | ||
+ | A query acima pode ser executada diretamente no MongoDB. | ||
No Java, com query string: | No Java, com query string: | ||
Linha 21: | Linha 24: | ||
"{ " + | "{ " + | ||
"$project: { " + | "$project: { " + | ||
− | "year: {$year: \"$ | + | "year: {$year: \"$createdAt\"}, " + |
− | "month: {$month: \"$ | + | "month: {$month: \"$createdAt\"} " + |
"} " + | "} " + | ||
"}, " + | "}, " + | ||
Linha 39: | Linha 42: | ||
AggregationOutput output = | AggregationOutput output = | ||
− | mongo.getCollection( | + | mongo.getCollection("collection").aggregate(criteria); |
</source> | </source> | ||
+ | |||
+ | Repare que foi usado a mesma query do primeiro exemplo. | ||
No Java, utilizando objetos: | No Java, utilizando objetos: | ||
Linha 47: | Linha 52: | ||
List criteria = asList( | List criteria = asList( | ||
new BasicDBObject("$project", | new BasicDBObject("$project", | ||
− | new BasicDBObject("year", new BasicDBObject("$year", "$ | + | new BasicDBObject("year", new BasicDBObject("$year", "$createdAt")) |
− | .append("month", new BasicDBObject("$month", "$ | + | .append("month", new BasicDBObject("$month", "$createdAt")) |
), | ), | ||
new BasicDBObject("$group", | new BasicDBObject("$group", | ||
Linha 62: | Linha 67: | ||
AggregationOutput output = | AggregationOutput output = | ||
− | mongo.getCollection( | + | mongo.getCollection("collection").aggregate(criteria); |
</source> | </source> | ||
+ | |||
+ | Repare que continuamos usando a mesma query do primeiro exemplo, porém, foi construída utilizando objetos. |
Edição atual tal como às 20h21min de 21 de agosto de 2016
Segue abaixo como agregar a collection "collection" por mês e ano (pelo campo "createdAt").
Query do Mongo:
db.collection.aggregate( {$project : { year : {$year : "$createdAt"}, month : {$month : "$createdAt"} }}, {$group : { _id : {year : "$year", month : "$month"}, count : {$sum : 1} }} )
A query acima pode ser executada diretamente no MongoDB.
No Java, com query string:
List criteria = (List) JSON.parse( "[" + "{ " + "$project: { " + "year: {$year: \"$createdAt\"}, " + "month: {$month: \"$createdAt\"} " + "} " + "}, " + "{ " + "$group: { " + "_id: { " + "year: \"$year\", " + "month: \"$month\"" + "} " + "} " + "} " + "]" ); MongoTemplate mongo = new MongoTemplate(new Mongo("localhost"), "myMongoDb"); AggregationOutput output = mongo.getCollection("collection").aggregate(criteria);
Repare que foi usado a mesma query do primeiro exemplo.
No Java, utilizando objetos:
List criteria = asList( new BasicDBObject("$project", new BasicDBObject("year", new BasicDBObject("$year", "$createdAt")) .append("month", new BasicDBObject("$month", "$createdAt")) ), new BasicDBObject("$group", new BasicDBObject("_id", new BasicDBObject("year", "$year") .append("month", "$month") ) .append("count", new BasicDBObject("$sum", 1)) ) ); MongoTemplate mongo = new MongoTemplate(new Mongo("localhost"), "myMongoDb"); AggregationOutput output = mongo.getCollection("collection").aggregate(criteria);
Repare que continuamos usando a mesma query do primeiro exemplo, porém, foi construída utilizando objetos.