我正在使用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.$.VotersIds
和Suggestions._id
我想使用编译时,静态类型的api,但我似乎无法找到它。我必须使用硬编码版本吗?
答案 0 :(得分:0)
您可以使用m =&gt;来执行$ m.Suggestions.ElementAt(-1).VotersIds。然而,第二个是棘手的,我们目前没有解决方案。您可以在此处查看功能请求:https://jira.mongodb.org/browse/CSHARP-1309。
克雷格