让我们假设以下架构:
{
'_id' : 'star_wars',
'count' : 1234,
'spellings' : [
{ spelling: 'Star wars', total: 10},
{ spelling: 'Star Wars', total : 15},
{ spelling: 'sTaR WaRs', total : 5} ]
}
我可以通过这样做来更新计数和拼写之一:
db.movies.update(
{_id: "star_wars",
'spellings.spelling' : "Star Wars" },
{ $inc :
{ 'spellings.$.total' : 1,
'count' : 1 }}
)
但是这种形式的更新不适用于 upsert。即,如果我尝试使用不存在的 _id 或使用不存在的拼写来更新(使用 upsert),则不会发生任何事情。
是否有允许我在更新 ($inc) 子文档时进行 upsert 的解决方案?
谢谢!