我目前有以下数据集:
{
'component_id':1,
'_locales':[
{
'url': 'dutch',
'locale': 'nl_NL'
}
] (etc)
}
如果我想用语言环境更新行,我会运行类似于:
db.components.update(
{'component_id': 1, '_locales.locale': 'nl_NL'},
{$set: {'_locales.$': {'url': 'new url','locale':'nl_NL'}},
true
);
这工作正常,直到语言环境不存在:
db.components.update(
{'component_id': 1, '_locales.locale': 'en_US'},
{$set: {'_locales.$': {'url': 'new url','locale':'en_US'}},
true
);
由于 component_id 上有一个唯一索引,这将引发抱怨重复键的异常。
有没有办法自动添加具有不同语言环境的新“文档”并在它已经存在时更新它?根据使用位置运算符的文档将无法与“更新插入”一起使用。