MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Sterownik Mongodb C# aktualizuje wszystkie elementy podtablicy, gdy tablica jest pusta

jak mówi komunikat o błędzie, możesz uruchamiać operacje aktualizacji tablicy tylko na polu, które jest tablicą. jeśli pole ma wartość null lub nie istnieje, aktualizacja również się nie powiedzie.

najprostszym rozwiązaniem jest uczynienie tego pola pustą tablicą podczas zapisywania dokumentów, tak aby wyglądało tak w bazie danych:

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

co można łatwo osiągnąć, nadając swojej właściwości c# wartość domyślną, na przykład:

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

program testowy:

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. Rozszerzenie Mongo php po aktualizacji Heroku (kompozytor)

  2. Jak utworzyć indeks tekstowy w MongoDB

  3. Skrypt powłoki mongo nie pozwala mi dołączyć użyj <database>

  4. Mapreduce w rodzimym sterowniku mongodb ruby

  5. MongoDB:Dokumenty zastępujące i podrzędne