在MongoDB中,从C#驱动程序访问:
我想保留一个具有当前值的密钥列表(整数很好)。 (Dictionary<int,int>
)适用于概念)
我需要在本文档中设置多个(10+)台机器值。每台机器上有多个线程。
使用C#和MongoDB驱动程序我需要:
如果密钥存在,请递增该密钥的值。 如果它不存在,我需要添加它,并将值设置为1.
至关重要: 它不能覆盖其他人写的值(I.E.没有得到doc并调用Save()来保存它) 它必须处理不能优雅地存在的增值。
我可能能够有一个插入新文档的查询,其中所有键都设置为0 - 如果这会有所帮助,但它不会很容易,所以这不是一个优选的答案。
我尝试使用词典,似乎无法在不创建词汇的情况下弄清楚如何更新它:
null,
{ v=1}
在我的插入内容中(它不包含k =,并且具有null,我不想要。并导致反序列化)
我不关心字典使用什么类型的序列化方法,并且对任何其他存储方法都开放。
有什么想法吗?
到目前为止,我最好的猜测是保留一个与值分开的键列表(两个List并将键附加到键列表中,如果找不到,请重新查询列表并使用第一个键作为键列表第二个列表中的索引。(这似乎可能会导致难以追踪的并发问题。)
我更喜欢Linq语法,但如果能让它起作用,我可以使用.Set(string,value)语法。