(侧栏上其他标题相似的问题没有解决这个问题。)
我有一个像历史序列生成器一样使用的集合:
{seq_id:1,dt:ISODate(...),type:'service_a',stage:1}
{seq_id:2,dt:ISODate(...),type:'service_a',stage:2}
{seq_id:3,dt:ISODate(...),type:'service_a',stage:3}
{seq_id:1,dt:ISODate(...),type:'service_b',stage:1}
{seq_id:2,dt:ISODate(...),type:'service_b',stage:2}
{seq_id:3,dt:ISODate(...),type:'service_b',stage:3}
我希望能够:
- 从所有其他客户端锁定集合(写入或读取)
- 将最近的 seq_id 读入内存
- 在内存中生成另外 3 个序列 ID(在我的例子中是 Java)
- 将 3 个文档插入集合中
- 解锁收藏
我希望能够在我的客户端锁定集合时锁定所有其他客户端甚至无法读取集合,因为在我的客户端到达第 4 步之前到达第 2 步和第 3 步的另一个客户端会导致 seq_ids 冲突。