在Linux上运行.Net Core时,似乎不支持C#驱动程序中位置运算符的所有用法。
这是我向MongoDB团队报告的一个问题,遗憾的是没有引起太多关注:
https://jira.mongodb.org/browse/CSHARP-2066
虽然我们正在努力解决这个问题,但有人知道某种解决方法吗?
答案 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 } }")
);