sql >> Database teknologi >  >> NoSQL >> MongoDB

Indsæt eller opdater underdokument sikkert i MongoDB

Har du kigget på AddToSet metode, hvis du bruger denne i kombination med opdateringsfunktionen i stedet for erstatningsfunktionen, burde den have en bedre kontrol over din atomicitet.

var updateBuilder = Builders<Item>.Update.AddToSet(items => items.SubItems, new SubItem());

collection.UpdateOne(itemFilter, updateBuilder);

Sådan i dit tilfælde.

    public Task Save(string itemId, SubItem subItem)
    {
        var itemFilter = Builders<Item>.Filter.Eq(v => v.Id, itemId);
        var collection = _db.GetCollection<Item>("Items");

        var updateBuilder = Builders<Item>.Update.AddToSet(items => items.SubItems, subItem);

        collection.UpdateOneAsync(itemFilter, updateBuilder, new UpdateOptions() { IsUpsert = true }).Wait();
    }



  1. Ordre og begrænsning resulterer i en forespørgsel med et tilbagekald

  2. MongoDB virker ikke. FEJL:dbpath (/data/db) eksisterer ikke.

  3. Kør javascript-script (.js-fil) i mongodb inklusive en anden fil inde i js

  4. Vedvarende data fra Redis til MongoDB til datalager