将新记录插入记录 MongoDB C# 上对象的数组

Insert new record to array on object on a record MongoDB C#

我有一个 table 来存储具有这样记录的用户。

{
    "_id" : "",
    "Username" : "",
    "Points" : 0,
    "CompletedAchievements" : {
        "Public": [], 
        "Private": []
    },
    "ActiveAchievements" : {
        "Public": [], 
        "Private": []
    },
    "Kudos" : [],
    "Teams" : [],
    "UserType" : "Admin",
    "PrivateAchievements": []
}

我的 C# 代码

public void Add<T>(string userId, string achievementId, int progress) {
        var collection = this.db.GetCollection<T>(typeof(T).Name);

        var filter = Builders<T>.Filter.And(
             Builders<T>.Filter.Eq("_id", userId),
             Builders<T>.Filter.Eq("ActiveAchievements.Public", "Public"));

        var update = Builders<T>.Update.Push("ActiveAchievements.$.Public", new 
        ActiveAchievement() { _id = achievementId, Progress = progress });

            collection.FindOneAndUpdateAsync(filter, update);
        }

我正在尝试为活跃成就中的 Public 数组添加一个值。有谁知道为什么这不起作用?

最终是一个简单的修复。 只有 1 个过滤器需要 _id 过滤器来获取记录。


var filter = Builders<T>Filter.Eq("_id", userId);

完成后,我可以对对象的数组进行以下更新。

var update = Builders<T>.Update.Push("ActiveAchievements.Public", new 
        ActiveAchievement() { _id = achievementId, Progress = progress });