首页 > 解决方案 > 如何使 UID 字段相对于日期范围是唯一的,以删除 MongoDB 中的重复行

问题描述

我是 MongoDb 的新手,我想通过根据 startDate 和 endDate 范围使 UID 唯一来删除重复的行。例如,我有以下文件代表员工记录。这里员工可以存在于不同的日期范围内(例如:如果“UID”:11 插入“startDate”:“2019-02-19”和“endDate”:“2019- 05-19"。但 UID:11 的同一员工不应插入同一日期范围内,可以插入不同日期范围内(例如:UID:11 可插入 "startDate" :"2020-02-19" “endDate”:“2020-06-19”)。那么如何使用这种条件防止行重复。希望您理解我的查询。提前致谢。

{  
        "_id" : ObjectId("5ef416bb2791f640a477f852"),  
        "UID" : 11,  
        "EmployeeName" : "Manu",  
        "startDate" : ISODate("2019-02-19T00:00:00Z"),  
        "endDate" : ISODate("2019-05-19T00:00:00Z")  
}

{  
        "_id" : ObjectId("5ef417422791f640a477f853"),  
        "UID" : 11,  
        "EmployeeName" : "Manu",  
        "startDate" : ISODate("2019-02-19T00:00:00Z"),  
        "endDate" : ISODate("2019-05-19T00:00:00Z")  
}

{  
        "_id" : ObjectId("5ef4176a2791f640a477f854"),  
        "UID" : 11,  
        "EmployeeName" : "Manu",  
        "startDate" : ISODate("2020-02-19T00:00:00Z"),  
        "endDate" : ISODate("2020-06-19T00:00:00Z")  
}

我已经根据我的知识尝试了以下查询,但没有奏效......

db.testing.distinct("UID","startDate":{"$gte":ISODate("2019-02-19")},"endDate":{"$lte":ISODate("2019-05-19")})

标签: mongodbduplicatesdate-rangeunique-constraintmongodb-indexes

解决方案


推荐阅读