C#MongoDB驱动程序会将基本数组查询转换为“点表示法”,但不幸的是CosmosDB doesn't support this syntax by default。
我目前正在通过在查询中添加其他(无意义)条件来解决该问题,该条件强制使用$elemMatch
,但我希望在可能的情况下在配置级别进行。
例如。
collection.Find(c => c.Items.Any(i => i.Status == 1));
将生成查询:
{"Items.Status": 1}
但我希望它生成:
{"Items": { "$elemMatch": { "Status": 1 } } }
答案 0 :(得分:1)
您可以使用模型类从MongoDB .NET驱动程序使用通用的Builders
类型来显式构建$elemMatch查询,请尝试:
var filter = Builders<YourModel>.Filter.ElemMatch(x => x.Items, item => item.Status == 1);
collection.Find(filter).ToList();