MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

„upsert” w osadzonym dokumencie

Możesz użyć $addToSet, aby dodać do zestawu, upewniając się, że nie ma zduplikowanego elementu tablicy, ale to nie zadziała w przypadku „aktualizacji”.

Aby robić to, co chcesz, musisz zmienić strukturę danych na coś takiego:

{
    "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
    "component_id" : 1,
    "_locales" : {
        "nl_NL" : {
            "url" : "dutch"
        }
    }
}

Teraz możesz zaktualizować lokalizację nl_NL za pomocą tylko:

db.components.update( { component_id: 1 }, { $set: { '_locales.nl_NL.url' : 'new url' } }, true );

Nowa lokalizacja też będzie działać, na przykład z:

db.components.update( { component_id: 1 }, { $set: { '_locales.en_US.url' : 'American' } }, true );

Być może warto rozważyć umieszczenie ustawień regionalnych jako części obiektu zagnieżdżonego, na przykład:

{
    "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
    "component_id" : 1,
    "_locales" : {
        "nl_NL" : {
            "url" : "dutch"
            "locale" : "nl_NL"                 
        }
    }
}

Ułatwia to w niektórych przypadkach odzyskanie danych.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Co to jest kursor w MongoDB?

  2. Losowy rekord z MongoDB

  3. Konwertuj MongoDB BsonDocument na prawidłowy JSON w C#

  4. Czy istnieje odpowiednik NOW() w MongoDB?

  5. łączenie się z lokalnym mongodb z kontenera docker