sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB, přidat nové { pole :hodnota } do existujícího vloženého dokumentu s víceúrovňovou tečkovou notací?

To, o co se snažíte, není možné vzhledem k vašemu schématu. Tečkový zápis může být víceúrovňový, ale pokud existuje více než jedna úroveň, která je polem, nelze ji již řešit pomocí pozičního operátoru '$'.

Např. budete muset udělat:

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

Ale mít dva operátory pozic v aktualizaci není možné, protože MongoDB může určit pouze pozici prvku v prvním poli.

Jedinou možností je přepracovat schéma tak, aby mělo vyhrazenou kolekci uživatelských webů (což je v tomto případě lepší i z jiných důvodů).




  1. Mongo Shell se nemůže připojit k Azure CosmosDB

  2. Jak uložit svá data na mongoDB pomocí expressjs?

  3. MongoDB '$or' a regex v PHP

  4. Chyba MongoDB Atlas při provádění transakce na více kolekcích (kód 8000)