Mongodb找到count>五

时间:2015-02-18 21:46:53

标签: mongodb

我有一个名为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 andruaand不同data值的所有文档分组,并查找/选择仅count>5的组}

1 个答案:

答案 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 } } }
])