MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализирането на драйвера на Mongodb C# за всички елементи на подмасив е неуспешно, когато масивът е празен

както се казва в съобщението за грешка, имате право да изпълнявате операции за актуализиране на масив само в поле, което е масив. ако полето има стойност null или не съществува, актуализацията също ще бъде неуспешна.

най-простото решение е да направите полето празен масив, когато записвате документите, така че да изглежда така в db:

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

което може лесно да се постигне чрез даване на стойност по подразбиране на вашето c# свойство като така:

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

тестова програма:

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. Mongoose findByIdAndUpdate не връща правилния модел

  2. показване на сумата от всички извлечени файлове в драйвера mongodb-nodejs

  3. Как да кодирате с Spring данни MongoDB за db.test.update({name:'abc'}, {$pull:{'child':{'age':10}}})

  4. Как да получите данни от съществуваща база данни MongoDB?

  5. Възможно ли е да се подобри скоростта на Mongoexport?