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

MongoDB, dodać nowe { pole :wartość } w istniejącym osadzonym dokumencie z wielopoziomową notacją kropkową?

To, co próbujesz zrobić, nie jest możliwe, biorąc pod uwagę Twój schemat. Notacja kropkowa może być wielopoziomowa, ale jeśli istnieje więcej niż jeden poziom będący tablicą, nie można jej już adresować za pomocą operatora pozycyjnego „$”.

Np. musisz zrobić:

db.my_collection.update( 
    {'websites.blog_posts.url': 'http://www.example.com/01.html' },
    {'$set': {'websites.$.blog_posts.$.impressions': 549}},
     true );

Ale posiadanie dwóch operatorów pozycji w aktualizacji nie jest możliwe, ponieważ MongoDB może określić tylko pozycję elementu w pierwszej tablicy.

Jedyną opcją jest przeprojektowanie schematu tak, aby zawierał dedykowaną kolekcję witryn użytkowników (co jest lepsze również z innych powodów w tym przypadku).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoid 3 - dojazd mapa_redukuj wyniki

  2. Filtr Mongoose oparty na dynamicznym kluczu daty z wartością

  3. Buforowanie połączeń MongoDB w Django

  4. MongoDB $setDifference

  5. Instalowanie Mongodb z lampą na Ubuntu (Linux)