sql >> Database >  >> NoSQL >> MongoDB

Mongo update array-element (.NET driver 2.0)

Het kostte me een tijdje om dit uit te zoeken, omdat het in geen van de officiële documentatie (of ergens anders) lijkt te worden genoemd. Ik heb dit echter wel gevonden op hun issue tracker, waarin wordt uitgelegd hoe de positionele operator $ moet worden gebruikt met de C# 2.0-driver.

Dit zou moeten doen wat je wilt:

public void UpdateItemTitle(string agendaId, string itemId, string title){
    var filter = Builders<TempAgenda>.Filter.Where(x => x.AgendaId == agendaId && x.Items.Any(i => i.Id == itemId));
    var update = Builders<TempAgenda>.Update.Set(x => x.Items[-1].Title, title);
    var result = _collection.UpdateOneAsync(filter, update).Result;
}

Merk op dat uw Item.Single() clausule is gewijzigd in Item.Any() en verplaatst naar de filterdefinitie.

[-1] of .ElementAt(-1) wordt blijkbaar speciaal behandeld (eigenlijk alles <0) en zal worden vervangen door de positionele operator $ .

Het bovenstaande wordt vertaald naar deze zoekopdracht:

db.Agenda.update({ AgendaId: 1, Items.Id: 1 }, { $set: { Items.$.Title: "hello" } })


  1. Hoe u meerdere lijstwaarden kunt krijgen in één enkele oproep in RedisTemplate van Jedis Client

  2. Verschil tussen het opslaan van gehele getallen en strings in Redis

  3. HBase-voorbeeldtabel

  4. MongoDB $toBool