In the example below I receive the error
“Too many positional (i.e. ‘$’) elements found in path”
how can I resolve using type-safe code ?
I read something about array filter but anyone use generic BsonDocument and not reflection
public class Building
{
public string Id { get; set; }
public string Name { get; set; }
public Store[] Stores { get; set; }
}
public class Store
{
public string Id { get; set; }
public string Name { get; set; }
public Employee[] Employee { get; set; }
}
public class Employee
{
public string Id { get; set; }
public string Name { get; set; }
}
public async Task UpdateEmployee(string buildingId,string storeId,string employeeId,string newName)
{
var filter = Builders<Building>.Filter.Eq(x => x.Id, buildingId);
filter &= Builders<Building>.Filter.ElemMatch(x => x.Stores, y => y.Id == storeId);
filter &= Builders<Building>.Filter.ElemMatch(x => x.Stores[-1].Employee, y => y.Id == employeeId);
var update = Builders<Building>.Update
.Set(x => x.Stores.ElementAt(-1).Employee.ElementAt(-1).Name, newName);
var result = await collection.UpdateOneAsync(
filter: filter,
update: update
);
}