[英]C# mongodb driver - update in sub array not working
我有以下模型(只有重要类型):
public class Model
{
[BsonId]
public ObjectId ModelId;
public List<Game> Games;
}
public class Game
{
[BsonId]
public ObjectId GameId;
public List<Match> Matches;
}
public class Match
{
[BsonId]
public ObjectId MatchId;
public int[] Votes;
}
我有以下查询:
var filter = Builders<Model>.Filter.And(
Builders<Model>.Filter.Eq(x => x.ModelId, modelId),
Builders<Model>.Filter.ElemMatch(x => x.Games, t => t.GameId == gameId));
var update = Builders<Model>.Update.Inc(x => x.Games[-1].Matches.First(t => t.MatchId == matchId).Votes[1], 2);
var options = new FindOneAndUpdateOptions<Model>()
{
ReturnDocument = ReturnDocument.After
};
我使用FindOneAndUpdateAsync
并能够检索数据,但未进行任何更改。 尝试了几次,仍然没有变化。
评论答案:
有退货吗?
是的,整个文档。 此外,当我使用固定索引时,例如:games [0] .matches [0],一切正常。
我是否尝试在Shell中运行命令?
不,很不幸,到目前为止,我还没有尝试过使用外壳
我认为您应该使用update.push方法来添加数组。 https://docs.mongodb.org/manual/reference/operator/update/push/
Command command = CreateCommand(commandType,message,source);
var filter = Builders<Sequence>.Filter.Eq("_id", seqid);
var update = Builders<Sequence>.Update.Push("Commands", command);
var result = collection.UpdateOneAsync(filter, update);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.