Mongodb 找到计数 > 5 的地方

Mongodb find where count > 5

我有一个名为 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 相同 ruaand 不同 data 值和 find/select 的所有文档分组count>5

这似乎是一个相当基本的问题,您可以使用 aggregation pipeline using $group and $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 } } }
])