Můžete použít $addToSet k přidání do sady, abyste se ujistili, že neexistuje žádný duplicitní prvek pole, ale to nebude fungovat pro váš případ "aktualizace".
Abyste mohli dělat, co chcete, budete muset změnit strukturu dat na něco jako:
{
"_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
"component_id" : 1,
"_locales" : {
"nl_NL" : {
"url" : "dutch"
}
}
}
Nyní můžete provést aktualizaci národního prostředí nl_NL pomocí:
db.components.update( { component_id: 1 }, { $set: { '_locales.nl_NL.url' : 'new url' } }, true );
A bude fungovat i nové národní prostředí, například s:
db.components.update( { component_id: 1 }, { $set: { '_locales.en_US.url' : 'American' } }, true );
Možná budete chtít zvážit použití národního prostředí také jako součást vnořeného objektu, jako v:
{
"_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
"component_id" : 1,
"_locales" : {
"nl_NL" : {
"url" : "dutch"
"locale" : "nl_NL"
}
}
}
To v některých případech usnadňuje načítání dat.