MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cập nhật trình điều khiển Mongodb C # không thành công tất cả các phần tử của mảng con khi mảng trống

như thông báo lỗi cho biết, bạn chỉ được phép chạy các hoạt động cập nhật mảng trên một trường là một mảng. nếu trường có giá trị null hoặc không tồn tại, cập nhật cũng sẽ không thành công.

giải pháp đơn giản nhất là đặt trường thành một mảng trống khi lưu tài liệu để nó trông giống như thế này trong db:

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

có thể dễ dàng đạt được bằng cách đặt thuộc tính c # của bạn một giá trị mặc định như sau:

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

chương trình thử nghiệm:

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. Lỗi:Không thể init client | mongo-connect express-session

  2. sử dụng một biến trong bản cập nhật mongodb

  3. mongodb cập nhật tất cả tài liệu với việc tăng giá trị lên 1

  4. Mongoose với ReplicaSet trên Atlas

  5. Lỗi kiểm tra mongodb khởi động mùa xuân