我有一个名为caminhos
的集合,如下面的文档:
"_id" : ObjectId("54e2aa2f71defd010b1caf5c"),
"data" : "2015-02-17 12:40:47",
"rua" : "Rua Caperuçu, 119–211",
"horario" : "12:40:47",
"localizacao" : {
"type" : "Point",
"coordinates" : [
-46.6452,
-23.60894
]
},
"id_usuario" : "54bef57a14b88ad70a8ab74e" }
/* 32 */ {
"_id" : ObjectId("54e387d371defd010b1caf5d"),
"data" : "2015-02-17 04:26:27",
"rua" : "Rua Camaipi, 1–83",
"horario" : "04:26:27",
"localizacao" : {
"type" : "Point",
"coordinates" : [
-46.63184,
-23.47975
]
},"id_usuario" : "54bef57a14b88ad70a8ab74e" }
/* 33 */ {
"_id" : ObjectId("54e387d471defd010b1caf5e"),
"data" : "2015-02-17 04:26:27",
"rua" : "Rua Camaipi, 1–83",
"horario" : "04:26:27",
"localizacao" : {
"type" : "Point",
"coordinates" : [
-46.63179,
-23.47985
]
},"id_usuario" : "54bef57a14b88ad70a8ab74e" }
/* 34 */ {
"_id" : ObjectId("54e387d471defd010b1caf5f"),
"data" : "2015-02-17 04:26:27",
"rua" : "Rua Camaipi, 1–83",
"horario" : "04:26:27",
"localizacao" : {
"type" : "Point",
"coordinates" : [
-46.63177,
-23.47987
]
},"id_usuario" : "54bef57a14b88ad70a8ab74e" }
我需要将id_usuario = 54bef57a14b88ad70a8ab74e
and
个rua
值and
不同data
值的所有文档分组,并查找/选择仅count>5
的组}
答案 0 :(得分:1)
这似乎是一个相当基本的问题,您可以使用aggregation pipeline使用$group
和$match
运算符来解决这个问题。
db.caminhos.aggregate([
{ $match: { id_usuario: "54bef57a14b88ad70a8ab74e" } },
{ $group: { _id: { rua: "$rua", data: "$data" } } },
{ $group: { _id: "$_id.rua", data: { $push: "$_id.data" }, count: { $sum: 1 } } },
{ $match: { count: { $gt: 5 } } }
])