调用AddToSet时使用编译时,静态类型的FieldDefinition

时间:2015-06-06 16:05:58

标签: c# mongodb mongodb-.net-driver

我正在使用MongoDb C#驱动程序并尝试将新元素添加到子文档的数组中。

我的模型如下:

{
    "_id": "5572f0fed11c38098833e306",
    "LastActionId": 11,
    "Suggestions": [
        {
            "_id": "48f366ccb900405bb393484ef2c43ca9",
            "VotersIds": [
                "5571b4d7d11c381d8026e848",
                "6571b4d7d11c381d8026e848"
            ]
        }
    ]
}  

我正在为特定建议添加新的选民ID。这段代码工作正常:

var builderUpdate = Builders<Meeting>.Update;
var update = builderUpdate.Inc(m => m.LastActionId, 1).AddToSet("Suggestions.$.VotersIds", userId);

var builderFilter = Builders<Meeting>.Filter;
var filter = builderFilter.Eq(m => m.Id, meetingId) & builderFilter.Eq("Suggestions._id", suggestionId);

await collection.UpdateOneAsync(filter, update);

但是,我不想硬编码Suggestions.$.VotersIdsSuggestions._id

我想使用编译时,静态类型的api,但我似乎无法找到它。我必须使用硬编码版本吗?

1 个答案:

答案 0 :(得分:0)

您可以使用m =&gt;来执行$ m.Suggestions.ElementAt(-1).VotersIds。然而,第二个是棘手的,我们目前没有解决方案。您可以在此处查看功能请求:https://jira.mongodb.org/browse/CSHARP-1309

克雷格