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

Mongo C#-driver opdaterer et specifikt element i et indlejret array

Du skal bruge $ positional operator hvor du kan angive tilstand på dokumentniveau og tilstand på matrixniveau for at finde enkelt indlejret element i en matrix af et bestemt dokument. I C# $ tegn er repræsenteret af -1 videregivet som et indeks for dit modelarray. Prøv:

var col = mydb.GetCollection<Document>("collectionName");
var id = new ObjectId("5babaaf5509f6d342da5abaa");
var elementName = "Car";
var newValue = 2;

var filterBuilder = Builders<Document>.Filter;
var filter = filterBuilder.Eq(x => x.Id, id) &
    filterBuilder.ElemMatch(doc => doc.Elements, el => el.Name == elementName);

var updateBuilder = Builders<Document>.Update;
var update = updateBuilder.Set(doc => doc.Elements[-1].Value, newValue);

Col.UpdateOne(filter, update);



  1. Hvordan udfører man sådanne filterforespørgsler i mongoengine på indlejrede dicts eller arrays indeholdt i dict med python?

  2. MongoDB 'kan ikke finde indeks for $geoNear-forespørgsel'

  3. Afkort en samling

  4. Indstil lagerplacering for MongoDB installeret på AWS EC2 Instance til EBS-lager. Og hvordan gendanner jeg det, efter at forekomsten er stoppet/afsluttet?