ile MongoDB içinde gömülü Doküman güncelleme:resmi C# sürücüsü
{
"_id": 1
"_t": "Company",
"Name": "Test Company"
"Divisions": [
{
"_id": 1
"_t": "Division",
"Name": "Test Division 1"
},
{
"_id": 2
"_t": "Division",
"Name": "Test Division 2"
}
]
}
official 10gen C# driver kullanırken bütün bir Bölümü/kaydetme güncelleştirmek için en iyi yolu nedir? (En son 0.9 sürümü.)
Bölümler eklemek için Update.AddToSetWrapped kullanıyorum ve bu iyi çalışıyor, ancak aynı zamanda _id'e bağlı olarak belgeleri güncelleştirmeyi de istiyorum. Örneğin
, aşağıdaki güncelleştirme yöntemi tanımlarsak:
public void UpdateDivision(IDivision division)
{
var mongo = MongoServer.Create(_connectionString);
var database = mongo.GetDatabase(_databaseName);
var query = Query.EQ("_id", division.CompanyId);
var update = Update.AddToSetWrapped("Divisions", division);
database.GetCollection<Company>("Company")
.Update(query, update, UpdateFlags.Upsert, SafeMode.True);
}
ve bu gibi çağırır:
var division = GetDivisionById(1);
division.Name = "New Name";
UpdateDivision(division);
sonra takım yeni bir örneğini olsa da, baz grubu eklenecek "_id" hala 1, İsim farklıdır ve bu nedenle benzersiz bir belgedir.
Tüm yerleşik bir belgeyi güncellemenin iyi bir yolu nedir?
Daha iyi bir çözüm bulmadan önce, ilk Bölüm $pull
'a gidiyorum ve sonra değiştirilmiş Bölme ile $addToSet
'a gidiyorum. Bu çalışır ancak iki ayrı güncellemeyi gerçekleştirdiği için ideal değildir.