比较和更新MongoDB中的后续对象

如何解决比较和更新MongoDB中的后续对象

我必须从关系型数据库切换到Nosql数据库,但是我对MongoDB仍然不太自信。我的数据库由工作合同组成,并按每个人分组。但是,需要检查条目。更准确地说,每个合同都存储为带有亲戚信息(例如,开始日期,结束日期,雇主等)的对象。合同存储在字段“ ord_id”之后,该字段实质上表示将数据插入原始数据库(.csv表)的一种顺序。 我想比较每个人的后续合同,并在必要时进行一些调整。例如,如果下一个合同的开始日期早于上一个合同的结束日期,则应更新前一个合同的结束日期并将其设置为等于下一个合同的开始日期。基本上,工作合同的期限不应重叠。 在下面的示例中,我显示了两名工人,他们各自的合同在“合同”字段中分组。但是,对于第一个工人,其第二份合同的结束日期与第三份合同的开始日期有重叠。

{
    "_id" : ObjectId("5ea995662a40c63b14266071"),"worker" : "1809871","contratcs" : [
             {
               "employer" : "2116096","start" : ISODate("2018-01-11T01:00:00.000+01:00"),"end" : ISODate("2018-01-12T01:00:00.000+01:00"),"ord_id" : 0
             },{
               "employer" : "2116096","start" : ISODate("2018-01-13T01:00:00.000+01:00"),"end" : ISODate("2018-02-30T01:00:00.000+01:00"),// The end date of this contract is higher than the start date of the following one; hence,I should set it equal to the start date of the next one. 
               "ord_id" : 1
             },{
               "employer" : "2198012","start" : ISODate("2018-02-25T01:00:00.000+01:00"),"end" : ISODate("2019-01-01T01:00:00.000+01:00"),"ord_id" : 2
             },]
},{
    "_id" : ObjectId("5ea995662a40c63b14266072"),"worker" : "1967652","contratcs" : [
             {
               "employer" : "2345690","start" : ISODate("2020-01-01T01:00:00.000+01:00"),"end" : ISODate("2020-01-3012T01:00:00.000+01:00"),"ord_id" : 3
             },{
               "employer" : "2347790","start" : ISODate("2020-02-01T01:00:00.000+01:00"),"end" : ISODate("2020-03-08T01:00:00.000+01:00"),"ord_id" : 4
             }
         ]
}

我已经用一种笨拙而不有效的方式实现了目标,而没有为每个人分组合同(我将原始数据库中的每个特定合同都视为一个不同的文档),并且将每个合同与$lookup函数链接在一起其后续(与同一工作人员匹配),然后相应地更新日期。当然有更好的方法。预先感谢您提出任何建议。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?