在MongoDB中如何更新键/值对列表c#

时间:2014-08-05 21:34:22

标签: c# mongodb mongodb-.net-driver mongodb-query

在MongoDB中,从C#驱动程序访问:

我想保留一个具有当前值的密钥列表(整数很好)。 (Dictionary<int,int>)适用于概念)

我需要在本文档中设置多个(10+)台机器值。每台机器上有多个线程。

使用C#和MongoDB驱动程序我需要:

如果密钥存在,请递增该密钥的值。 如果它不存在,我需要添加它,并将值设置为1.

至关重要:     它不能覆盖其他人写的值(I.E.没有得到doc并调用Save()来保存它)     它必须处理不能优雅地存在的增值。

可能能够有一个插入新文档的查询,其中所有键都设置为0 - 如果这会有所帮助,但它不会很容易,所以这不是一个优选的答案。

我尝试使用词典,似乎无法在不创建词汇的情况下弄清楚如何更新它:

null,
{ v=1}   

在我的插入内容中(它不包含k =,并且具有null,我不想要。并导致反序列化)

我不关心字典使用什么类型的序列化方法,并且对任何其他存储方法都开放。

有什么想法吗?

到目前为止,我最好的猜测是保留一个与值分开的键列表(两个List并将键附加到键列表中,如果找不到,请重新查询列表并使用第一个键作为键列表第二个列表中的索引。(这似乎可能会导致难以追踪的并发问题。)

我更喜欢Linq语法,但如果能让它起作用,我可以使用.Set(string,value)语法。

0 个答案:

没有答案