Я новичок в Монго и пытаюсь заставить эту схему работать.
Он предназначен для регистрации событий, происходящих на веб-сайте с высоким трафиком - просто увеличивает число раз, когда происходит определенное действие.
{
_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 - если я добавлю addToSet с {Key: "SomeStat1"}, он не будет считать его дубликатом, поскольку он сопоставляется со всем документом, и, следовательно, вставить его вместе с существующим значением SomeStat1.
Какой здесь лучший подход? Есть ли способ контролировать соответствие $ addToSet? Или мне нужна другая схема?
Спасибо заранее.