0

C# MongoDB 驱动程序会将基本数组查询转换为“点表示法”,但遗憾的是 CosmosDB 默认不支持这种语法

我目前正在通过在我的查询中添加一个额外的(无意义的)条件来解决这个问题,这会强制使用,$elemMatch但如果可能的话,我更愿意在配置级别进行。

例如。

collection.Find(c => c.Items.Any(i => i.Status == 1));

将生成查询:

{"Items.Status": 1}

但我希望它生成:

{"Items": { "$elemMatch": { "Status": 1 } } }
4

1 回答 1

1

您可以使用BuildersMongoDB .NET 驱动程序中的泛型类型使用您的模型类显式构建$elemMatch查询,尝试:

var filter = Builders<YourModel>.Filter.ElemMatch(x => x.Items, item => item.Status == 1);
collection.Find(filter).ToList();
于 2018-12-10T16:53:40.743 回答