我有一组用户数据。我想查询usrname,注册日期,没有。特定日期的用户?

时间:2017-03-04 11:46:59

标签: mongodb mongodb-query aggregation-framework

以下是用户的集合,它有5个字段,我想查询usernamecreated_on以及根据他们注册的日期基于created_on属性的用户数量

例如,如果假设它包含两个注册了该特定日期的用户,我需要使用created_on属性查询在03-03-2017日期注册的用户

我的查询应该返回{"user":["user1", "user2"], "num_users":2}

{
    "_id": ObjectId("58b955c47ff9182e54bac2e5"),
    "username": "Sanjay",
    "password": "$2a$10$JoLx9R0f1WI23R9i/ieSl.YFFO9Auu.dJBdw4BvRQ/vKqKp9rTv6.",
    "dob": "2121-03-11T18:30:00.000Z",
    "email": "jp@newgmail",
    "created_on": ISODate("2017-03-03T11:40:00.692Z"),
    "__v": 0
} {
    "_id": ObjectId("58b956107ff9182e54bac2e6"),
    "username": "rahul",
    "password": "$2a$10$Z7IRhIORAi9zlXGNewxsceaO66CQr7hg142yMdQilMqKhYwtC/wSm",
    "dob": "1211-02-20T18:30:00.000Z",
    "email": "rahul@gmail.com",
    "created_on": ISODate("2017-03-02T11:40:00.692Z"),
    "__v": 0
} {
    "_id": ObjectId("58b9562b7ff9182e54bac2e7"),
    "username": "ravi",
    "password": "$2a$10$fAqiyM.b9.B7x.LpLaUnnOdCSF.4xj55uSyOD6KLwlXu1W6awM66C",
    "dob": "2017-03-20T18:30:00.000Z",
    "email": "gmail@ravi",
    "created_on": ISODate("2017-03-03T11:40:00.692Z"),
    "__v": 0
} {
    "_id": ObjectId("58ba69fac3285e193089a62b"),
    "username": "prashanth",
    "password": "$2a$10$CPQiRBk5tiUGna8JHmQhhO.a9SYBz0RyDCuFdLdc6IrpAWbw7d/Ua",
    "dob": "1993-02-20T18:30:00.000Z",
    "email": "jprashanthgowda34@gmail.com",
    "created_on": ISODate("2017-03-04T07:17:14.563Z"),
    "__v": 0
}
我正在做的是:

db.usercollection.aggregate([{
    $group: {
        _id: "$created_on",
        num_user: {
            $sum: 1
        }
    }
}])

我需要查询的是:

{
    "_id" : ISODate("2017-03-02T11:40:00.692Z"),
    "num_user" : 1,
    "users" : ["sanjay"]
}
{
    "_id" : ISODate("2017-03-04T07:17:14.563Z"),
    "num_user" : 1,
    users:["prashanth"]
}
{
    "_id" : ISODate("2017-03-03T11:40:00.692Z"),
    "num_user" : 2,
    "users" : ["rahul", "ravi"];
}

请建议我解决方案。如果我的方法是错误的,请告诉我如何才能解决这个问题。

提前致谢...

2 个答案:

答案 0 :(得分:2)

在汇总中使用$push

db.usercollection.aggregate([{
    $group: {
        _id: "$created_on",
        users: {
            $push: "$username"
        },
        num_user: {
            $sum: 1
        }
    }
}])

username数组中添加users JSONObject:

db.data.aggregate([{
    $group: {
        _id: "$created_on",
        users: {
            $push: {
                username: "$username"
            }
        },
        num_user: {
            $sum: 1
        }
    }
}])

答案 1 :(得分:0)

在$ group stage aggregate中使用$ push运算符,

      db.tr.aggregate([{
        $group: {
            _id: "$created_on",
            user: {
                $push: "$username"
            },
            num_user: {
                $sum: 1
            }
        }
     }]).pretty()