【发布时间】:2018-03-26 21:03:35
【问题描述】:
问题陈述:
我在 MongoDB 中有一个集合,其中包含一个 Int32 类型的字段。我想在这个集合中添加一个文档。我需要为每个插入将值增加 1,因为该字段已编入索引并且必须是唯一的。
选项:
- [preferable] 增加 DB 端的值。也就是说,不指定新的(更高的)值。只需指示 MongoDB 在插入时自动递增。
- 先阅读。对数据库执行查找查询以首先查找当前(插入之前)最高值,在内存中递增,然后插入新文档。这可能会由于竞速条件而失败(操作不是原子的)。
- 在内存中保留一个索引计数器。对我来说不是一个选择,因为有多个应用程序写入同一个集合(旧限制)。
- 其他想法?
示例:
{
_id: ....
index: 123,
open: true
}
await collection.InsertOneAsync(record.ToBsonDocument());
插入的新文档的索引值应为 124
语言:
C#
问题:
您能否提供一个示例代码(C#)来实现第一个选项?
额外信息:
我无权访问其他应用程序的代码(该应用程序保留自己的索引号)。因此,拥有另一个集合并添加序列解析器功能将不起作用,因为这会触发对旧版应用程序的更改。
【问题讨论】: