使用Java更新MongoDB中的循环数组

使用Java更新MongoDB中的循环数组,java,arrays,mongodb,atomic,circular-buffer,Java,Arrays,Mongodb,Atomic,Circular Buffer,我创建了一个类来创建整数的循环缓冲区, 我需要编写它来为mongodb工作,我已经用增量和set完成了添加,但我不知道如何在不下载和重新加载所有数组的情况下创建remove方法,是否有更有效的方法来保持原子性?对于“添加”操作,在MongoDB中进行更新时,可以将$push操作符与$slice修饰符一起使用,请参阅 对于“删除”操作,您可以使用$pull操作符,请参阅。对于“添加”操作,您可以在MongoDB中执行更新时使用$push操作符和$slice修饰符,请参阅 对于“remove”操作,

我创建了一个类来创建整数的循环缓冲区, 我需要编写它来为mongodb工作,我已经用增量和set完成了添加,但我不知道如何在不下载和重新加载所有数组的情况下创建remove方法,是否有更有效的方法来保持原子性?

对于“添加”操作,在MongoDB中进行更新时,可以将$push操作符与$slice修饰符一起使用,请参阅

对于“删除”操作,您可以使用$pull操作符,请参阅。

对于“添加”操作,您可以在MongoDB中执行更新时使用$push操作符和$slice修饰符,请参阅


对于“remove”操作,您可以使用$pull操作符,请参见。

使用Javascript,您可以访问如下特定数组索引:
{'arrayfield.5':value}
。但是我不知道如何用Java驱动程序做到最好。使用Javascript,您可以访问如下特定的数组索引:
{'arrayfield.5':value}
。但是我不知道如何用Java驱动程序做到最好。阅读完整的问题和代码,它不是一个普通的数组,它是一个为编写而优化的循环缓冲区数组,我不需要只推拉元素。好的。你是说你担心$push+$slice不够快?如果你担心删除操作的性能,也许你应该考虑用一个无效的值替换一个项目,而不是从LISTIFF中删除这个项目,我用一个无效的值替换它。我怎样才能在它之后替换它?我的意思是,假设你的圆形数组有[a,b,c,d],last=3。现在移除b,得到[a,nil,c,d]和last=3。现在加上e,得到[e,nil,c,d]和last=0。然后加上f,得到[e,f,c,d],last=1。这是一个可以接受的行为吗?阅读完整的问题和代码,它不是一个普通的数组,它是一个为编写而优化的循环缓冲区数组,我不需要只推拉元素。好的。你是说你担心$push+$slice不够快?如果你担心删除操作的性能,也许你应该考虑用一个无效的值替换一个项目,而不是从LISTIFF中删除这个项目,我用一个无效的值替换它。我怎样才能在它之后替换它?我的意思是,假设你的圆形数组有[a,b,c,d],last=3。现在移除b,得到[a,nil,c,d]和last=3。现在加上e,得到[e,nil,c,d]和last=0。然后加上f,得到[e,f,c,d],last=1。这是可以接受的行为吗?