MongoDb C#驱动程序不更新我的内部列表
我有一种方法可以将新数据推送到NozzleStateList中:MongoDb C#驱动程序不更新我的内部列表,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我有一种方法可以将新数据推送到NozzleStateList中: public async Task AddNozzleState(NozzleState nozzleState, Guid tankId, Guid gasStationId) { UpdateDefinition<GasStation> update = Builders<GasStation>.Update.Push("TankList.$[t].Noz
public async Task AddNozzleState(NozzleState nozzleState, Guid tankId, Guid gasStationId)
{
UpdateDefinition<GasStation> update = Builders<GasStation>.Update.Push("TankList.$[t].NozzleList.$[n].NozzleStateList", nozzleState);
await _context.GetCollection<GasStation>().UpdateOneAsync(x => x.Id == gasStationId, update, new UpdateOptions
{
ArrayFilters = new List<ArrayFilterDefinition>{
new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("t._id", tankId)),
new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("n._id", nozzleState.NozzleId))
}
});
}
public异步任务AddNozzleState(NozzleState-NozzleState,Guid-tankId,Guid-gasStationId)
{
UpdateDefinition update=Builders.update.Push(“坦克列表.$[t].NozzleList.$[n].NozzleStateList”,nozzleState);
wait_context.GetCollection().UpdateOneAsync(x=>x.Id==gasStationId,update,newupdateoptions
{
ArrayFilters=新列表
AddNozzleState方法运行时没有错误,但不保存任何内容。
问题出在哪里?最后,我改变了方法,使用了JsonArrayFilterDefinition,这段代码可以工作:
public async Task AddNozzleState(NozzleState nozzleState, Guid tankId, Guid gasStationId)
{
UpdateDefinition<GasStation> update = Builders<GasStation>.Update.Push("TankList.$[t].NozzleList.$[n].NozzleStateList", nozzleState);
await _context.GetCollection<GasStation>().UpdateOneAsync(x => x.Id == gasStationId, update, new UpdateOptions
{
ArrayFilters = new List<ArrayFilterDefinition>{
new JsonArrayFilterDefinition<Tank>("{'t._id': { $eq : UUID(\""+ tankId +"\")} }"),
new JsonArrayFilterDefinition<Nozzle>("{'n._id': { $eq : UUID(\""+ nozzleState.NozzleId+"\")}}")
}
});
}
public异步任务AddNozzleState(NozzleState-NozzleState,Guid-tankId,Guid-gasStationId)
{
UpdateDefinition update=Builders.update.Push(“坦克列表.$[t].NozzleList.$[n].NozzleStateList”,nozzleState);
wait_context.GetCollection().UpdateOneAsync(x=>x.Id==gasStationId,update,newupdateoptions
{
ArrayFilters=新列表{
新的JsonArrayFilterDefinition(“{t.\U id':{$eq:UUID(\”“+tankId+“\”)}”),
新的JsonArrayFilterDefinition(“{n.'u id':{$eq:UUID(\”“+nozzleState.NozzleId+“\”)}”)
}
});
}