繁体   English   中英

C#mongodb驱动程序-子数组中的更新不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM