【问题标题】:Mongo Db query to get distinct recordsMongodb查询以获取不同的记录
【发布时间】:2020-08-04 21:07:31
【问题描述】:

我在 DB 中收集了大约 100 万条记录。 Hpw 获取不同的 eventID 和 eventName 来自 D 中任何特定日期(如 29-07-2020)的集合?

{
    "_id" : 1814099,
    "eventId" : "LAS012",
    "eventName" : "CustomerTab",
    "timeStamp" : ISODate("2018-12-31T20:09:09.820Z"),
    "eventMethod" : "click",
    "resourceName" : "CustomerTab",
    "targetType" : "",
    "resourseUrl" : "",
    "operationName" : "",
    "functionStatus" : "",
    "results" : "",
    "pageId" : "CustomerPage",
    "ban" : "290824901",
    "jobId" : "87377713",
    "wrid" : "87377713",
    "jobType" : "IBJ7FXXS",
    "Uid" : "sc343x",
    "techRegion" : "W",
    "mgmtReportingFunction" : "N",
    "recordPublishIndicator" : "Y",
    "__v" : 0
}

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    您可以使用distinct,例如获取唯一的eventID

    let eventIds = await db.collection.distinct('eventID', {
       "timeStamp": {
             $gte: ISODate("2018-12-30T00:00:00.000Z"),
             $lt: ISODate("2018-12-31T00:00:00.000Z")
       }
    })
    

    如果您想同时检索两个字段,则必须使用聚合:

    db.collection.aggregate([
        {
            $match: {
                "timeStamp": {
                    $gte: ISODate("2018-12-30T00:00:00.000Z"),
                    $lt: ISODate("2018-12-31T00:00:00.000Z")
                }
            }
        },
        {
            $facet: {
                eventIds: [
                    {
                        $group: {
                            _id: "$eventID"
                        }
                    }
                ],
                eventName: [
                    {
                        $group: {
                            _id: "$eventName"
                        }
                    }
                ]
            }
        }
    ])
    

    如果eventIDeventName 相互关联:

    db.collection.aggregate([
        {
            $match: {
                "timeStamp": {
                    $gte: ISODate("2018-12-30T00:00:00.000Z"),
                    $lt: ISODate("2018-12-31T00:00:00.000Z")
                }
            }
        },
        {
            $group: {
                _id: {eventID: "$eventID", eventName: "$eventName"}
            }
        }
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2017-03-29
      • 2012-09-10
      • 2010-09-21
      • 2021-05-29
      • 2020-04-09
      相关资源
      最近更新 更多