针对.NET内核的MongoDB C#驱动程序中不支持的位置运算符的解决方法

时间:2017-11-14 18:59:08

标签: linux mongodb asp.net-core .net-core

在Linux上运行.Net Core时,似乎不支持C#驱动程序中位置运算符的所有用法。

这是我向MongoDB团队报告的一个问题,遗憾的是没有引起太多关注:

https://jira.mongodb.org/browse/CSHARP-2066

虽然我们正在努力解决这个问题,但有人知道某种解决方法吗?

1 个答案:

答案 0 :(得分:2)

通常您可以使用基于JSON字符串的查询。因此,使用您在JIRA问题中给出的示例,如下所示:

collection.UpdateOne(
    filter: Builders<Animal>.Filter.Where(x => x.Subdocument.Subarray.Any(itm => itm.SomeProperty == "foobar")),
    update: Builders<Animal>.Update.Inc(x => x.Subdocument.Subarray[-1].SomeNumericProperty, 10)
);

您可以将其重写为:

collection.UpdateOne(
    filter: Builders<Animal>.Filter.Where(x => x.Subdocument.Subarray.Any(itm => itm.SomeProperty == "foobar")),
    update: "{ $inc: { \"Subdocument.Subarray.$.SomeNumericProperty\": 10 } }")
);