sql >> データベース >  >> NoSQL >> MongoDB

Mongo更新配列要素(.NETドライバー2.0)

    公式ドキュメント(または他の場所)のいずれにも言及されていないようであるため、これを理解するのにしばらく時間がかかりました。ただし、これは、位置演算子$の使用方法を説明する課題追跡システムで見つかりました。 C#2.0ドライバーを使用します。

    これはあなたが望むことをするはずです:

    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;
    }
    

    Item.Single()に注意してください 句がItem.Any()に変更されました フィルタ定義に移動しました。

    [-1] または.ElementAt(-1) 明らかに特別に扱われ(実際にはすべて<0)、位置演算子$に置き換えられます 。

    上記はこのクエリに変換されます:

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


    1. Meteorの実行中に、別のクライアントからMeteorのMongoDBにアクセスするにはどうすればよいですか?

    2. マングースのどのSchemaTypeがタイムスタンプに最適ですか?

    3. Node.jsを使用してMongoDBに接続するための最良の方法

    4. MongoDBの正規化、外部キー、および結合