MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pembaruan driver Mongodb C# semua elemen subarray gagal ketika array kosong

seperti yang dikatakan pesan kesalahan, Anda hanya diperbolehkan menjalankan operasi pembaruan array pada bidang yang merupakan array. jika bidang memiliki nilai null atau tidak ada, pembaruan juga akan gagal.

solusi paling sederhana adalah membuat field menjadi array kosong saat menyimpan dokumen sehingga terlihat seperti ini di db:

{
    "_id": ObjectId("5df9af0e22bb051d0c25c936"),
    "Quotes": [ ]
}

yang dapat dengan mudah dicapai dengan memberikan properti c# Anda nilai default seperti:

    public Quote[] Quotes { get; set; } = new Quote[0];

program uji:

using MongoDB.Entities;
using MongoDB.Entities.Core;

namespace StackOverflow
{
    public class Test : Entity
    {
        public string Name { get; set; }
        public Quote[] Quotes { get; set; } = new Quote[0];
    }

    public class Quote
    {
        public bool flag { get; set; }
        public string status { get; set; }
    }

    public class Program
    {
        private static void Main(string[] args)
        {
            new DB("test", "localhost");

            (new[] {
                new Test { Name = "no quotes"},
                new Test { Quotes = new[]{
                    new Quote { flag = true, status = "PROCESSED" } } },

                new Test { Quotes = new[]{
                    new Quote { flag = true, status = "NOT-PROCESSED" },
                    new Quote { flag = true, status = "NOT-PROCESSED" }
                }}
            }).Save();

            var field = Prop.PosAll<Test>(t => t.Quotes[0].flag);

            DB.Update<Test>()
              .Match(_ => true)
              .Modify(b => b.Set(field, false))
              .Execute();
        }
    }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jackson tidak dapat melakukan deserialize objek MongoDB yang melewati REST

  2. Bagaimana cara membuat pelanggan dan kartu dalam satu tindakan dengan Stripe?

  3. Buat Pengguna Super di mongo

  4. tanggal di MongoDB:saat memasukkan objek Tanggal ke dalam database Mongo, tanggal menjadi 1 hari lebih awal dari dirinya sendiri

  5. Bagaimana cara memindahkan kursor tailable dengan data menunggu sampai akhir jadi saya baru saja mendapatkan pembaruan baru