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