【发布时间】:2011-09-25 19:37:55
【问题描述】:
我是 Mongo 新手,正在努力使这个架构工作。
它旨在记录在高流量网站上发生的事件 - 只是增加某个操作发生的次数。
{
_id: "20110924",
Vals:[
{ Key: "SomeStat1": Value: 1},
{ Key: "SomeStat2": Value: 2},
{ Key: "SomeStat3": Value: 3}
]
}
,
{
_id: "20110925",
Vals:[
{ Key: "SomeStat1": Value: 3},
{ Key: "SomeStat8": Value: 13},
{ Key: "SomeStat134": Value: 63}
]
}, etc.
所以这里的 _id 是日期,然后是不同统计数据的数组,以及它们发生的次数。当天可能没有统计信息,统计键可以是动态的。
我正在寻找实现这些更新的最有效方法,避免竞争条件......所以理想情况下都是原子的。
我在尝试执行 $inc 时遇到了困难。当我指定它应该更新插入时,它会尝试将整个文档作为条件匹配,并且在重复键上失败。同样对于 $addToSet - 如果我使用 { Key:"SomeStat1" } addToSet,它不会认为它是重复的,因为它与整个文档匹配,因此将它与现有的 SomeStat1 值一起插入。
这里最好的方法是什么?有没有办法控制 $addToSet 的匹配方式?还是我需要不同的架构?
提前致谢。
【问题讨论】:
标签: mongodb