Я полностью потерял выполнение CRUD и других операций над элементами массива во встроенном массиве mongodb с использованием драйверов C#.mongodb .net driver V2: Как выполнить операции с массивом
учитывая У меня есть следующие классы (простой пример):
public class Child
{
public ObjectId Id;
public DateTime dateOfBirth;
public string givenName;
}
class Family
{
public ObjectId Id;
public string name;
public List<Child> children;
}
Моя коллекция должна хранить семейные документы.
Как:
- Добавить новый ребенок в семью
- Удаления определенного ребенка
- Update один Child
- Количество детей одной семьи
- получить младший ребенок семьи
- Нагрузка одного конкретного ребенка
без загрузки всей семьи объекта
Хотя я принимаю участие в классе университета Монго mongo.net Я полностью потерянным и документация по работе с массивами практически не существует.
Я знаю, что получил ответы на 1-4:
//Add child
families.UpdateOne(Builders<Family>.Filter.Where(x=>x.name=="Burkhart"), Builders<Family>.Update.AddToSet("children",
new Child() {dateOfBirth = new DateTime(2005, 4, 26), givenName = "Finn"}));
// Add another
families.UpdateOne(Builders<Family>.Filter.Where(x => x.name == "Burkhart"), Builders<Family>.Update.AddToSet("children",
new Child() { dateOfBirth = new DateTime(2007, 4, 26), givenName = "Florentina" }));
//remove one
families.UpdateOne(Builders<Family>.Filter.Where(x => x.name == "Burkhart"),
Builders<Family>.Update.PullFilter(c => c.children, m => m.givenName == "Florentina"));
//update one
families.UpdateOne(Builders<Family>.Filter.Where(x => x.name == "Burkhart" && x.children.Any(c => c.givenName =="Finn")),
Builders<Family>.Update.Set(x=> x.children[-1].givenName,"Finn Linus"));
//count children
var numberOfChildren =
families.Aggregate()
.Match(f => f.name == "Burkhart")
.Project(new BsonDocument("count", new BsonDocument("$size", "$children")))
.FirstOrDefault()
.GetValue("count")
.ToInt32();
вы можете скачать драйвер Монго из GitHub и посмотреть тесты -> примеров – profesor79
Я сделал это, но нет примеров для моих вопросов – Thomas
, что странно '[Факт] общественных недействительными AddToSetEach_Typed() { var subject = CreateSubject(); Assert (subject.AddToSetEach (x => x.FavoriteColors, new [] {"green", "violet"}), "{$ addToSet: {colors: {$ each: ['green', 'violet'] }}} "); Assert (subject.AddToSetEach ("FavoriteColors", new [] {"green", "violet"}), "{$ addToSet: {colors: {$ each: ['green', 'violet']}}}"); } ' –
profesor79