【问题标题】:Inserting an array item and increment a version number ( at one go)插入一个数组项并增加一个版本号(一次)
【发布时间】:2019-01-14 13:34:36
【问题描述】:

我们有一个业务用例,我们在集合上打开一个更改流并监听通过它发送的所有更新。

然后我们收到的更改被推送到另一个 mongo DB 中,我们需要以这种特定格式存储我们的数据。

首先插入目标数据库"

{
    "_id"   : :"1"
    "name"  : "XXX",
    "value" " "YYY" 
}
delta[]

// 没有更新,因为这是第一次插入

第一次更新到同一个id

{
    "_id"   : :"1"
    "name"  : "XXX",
    "value" " "YYY" 
}
delta
{
   [ "name","AAA", version : 1 ] 

// 改变流监听名字的改变 }

第二次更新到同一个id。

{
    "_id"   : :"1"
    "name"  : "XXX",
    "value" " "YYY" 
}
delta
{
   [ "name","AAA", version : 1 ],[ "value","MMM", version : 2 ] //Second 
}

我已经能够通过使用文档顶部的版本字段来实现相同的效果,将其拉出并使用 $inc 运算符将其加一,然后将值插入数组索引中,但我想实现向数组添加新索引时版本的增量。

谢谢,

【问题讨论】:

  • 看起来版本是数组索引+1,如果数组元素只是插入,那么存储版本是多余的
  • 感谢您回复,但如果是这种情况,我在获取记录时会遇到问题,有没有办法可以在使用 Java 的 mongo 数组上使用运算符的索引?例如,如果我有版本号,如果没有它们,拉它们会很容易,我需要一种方法来使用数组索引作为版本并拉它

标签: mongodb


【解决方案1】:

当您有一个较小的记录集时,我能够使用序列轻松解决这个问题,但对于我的记录是每天一百万的情况,这是行不通的,因为用于计算 ID 的版本号我将不得不做一个分贝命中,这不会扩展。

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 2017-08-15
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2011-05-31
    • 2017-07-10
    • 2011-10-02
    相关资源
    最近更新 更多