【问题标题】:Get distinct count pipeline获取不同的计数管道
【发布时间】:2015-10-26 10:24:05
【问题描述】:

我有 mongodb 文档

"_id" : ObjectId("55a6a66e072bfb0dcc1d83c1"), 
"IdUser" : NumberInt(1), 
"UserName" : "user1", 
"DeviceId" : "aaaaaaaaaaaaaaaaaaaaaaaaaa", 
"RegTime" :  ISODate("2015-07-15T18:20:02.896+0000")


"_id" : ObjectId("55a6a66e072bfb0dcc1d83c2"), 
"IdUser" : NumberInt(2), 
"UserName" : "user2", 
"DeviceId" : "aaaaaaaaaaaaaaaaaaaaaaaaaa", 
"RegTime" :  ISODate("2015-07-15T18:20:02.896+0000")


"_id" : ObjectId("55a6a66e072bfb0dcc1d83c3"), 
"IdUser" : NumberInt(3), 
"UserName" : "user3", 
"DeviceId" : "aaaaaaaaaaaaaaaaaaaaaaaaaa", 
"RegTime" :  ISODate("2015-07-15T18:20:02.896+0000")


"_id" : ObjectId("55a6a66e072bfb0dcc1d83c4"), 
"IdUser" : NumberInt(4), 
"UserName" : "user4", 
"DeviceId" : "aaaaaaaaaaaaaaaaaaaaaaaaaa", 
"RegTime" :  ISODate("2015-07-15:20:02.896+0000")


"_id" : ObjectId("55a6a66e072bfb0dcc1d83c5"), 
"IdUser" : NumberInt(5), 
"UserName" : "user5", 
"DeviceId" : "bbbbbbbbbbbbbbbbbbbbbbbbbb", 
"RegTime" :  ISODate("2015-07-15T18:20:02.896+0000")


"_id" : ObjectId("55a6a66e072bfb0dcc1d83c6"), 
"IdUser" : NumberInt(6), 
"UserName" : "user6", 
"DeviceId" : "cccccccccccccccccccccccccc", 
"RegTime" :  ISODate("2015-07-15T18:20:02.896+0000")

我想要结果 Count Deviceid Distinct in day in month
2015-07-15 =CountDeviceDistinct = 3 {aaaaaaaaaaaaaaaa,bbbbbbbbbbbbbbbbb,cccccccccccccc}

【问题讨论】:

    标签: mongodb aggregation-framework mongodb-.net-driver


    【解决方案1】:

    我认为您应该按日期分组并在字段中收集设备 ID,如下所示:

    db.collection.aggregate(
       [{ $group : {
               _id : { month: { $month: "$date" }, day: { $dayOfMonth: "$date" }, year: { $year: "$date" } }, DeviceIds: { $addToSet: "$DeviceId" }
        }}
       ]
    )
    

    【讨论】:

    • 请永远不要使用$project 阶段,否则可以直接集成到$group 中。这也不能回答 OP 要求的每个“DeviceId”值的“计算不同”出现次数所提出的问题。
    • @SergiuZahari 不。仍然不会解决OP提出的问题。如果你真的知道如何解决这个问题,那就很简单了。
    • @BlakesSeven,你是对的,需要 DedviceId 的一个放松和额外的小组。
    • @SergiuZahari 不。比这更容易解决的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 2019-08-19
    • 2020-10-12
    • 2017-08-16
    • 2021-06-28
    相关资源
    最近更新 更多