sql >> Database >  >> NoSQL >> MongoDB

MongoDB, nieuw {veld:waarde} toevoegen in bestaand ingesloten document met puntnotatie op meerdere niveaus?

Wat u probeert te doen is niet mogelijk gezien uw schema. Puntnotatie kan meerdere niveaus hebben, maar als er meer dan één niveau is dat een array is, kan het niet langer worden geadresseerd met de positionele operator '$'.

bijv. je zou moeten doen:

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

Maar het is niet mogelijk om twee positie-operators in de update te hebben, omdat MongoDB alleen de positie van een element in de eerste array kan bepalen.

Uw enige optie is om uw schema opnieuw te ontwerpen om een ​​speciale verzameling gebruikerswebsites te hebben (wat in dit geval ook om andere redenen beter is).




  1. Hoe kan ik $addToSet een object aan een array toevoegen en ook $sorteren met MongoDB?

  2. MapReduce-aggregatie op basis van attributen buiten het document

  3. Mongo-queryparameters opgeven vanuit clientcontroller (MEAN.JS)

  4. Is er hoe dan ook te ontdekken welke ip-adressen verbonden zijn met de db?