如何使用MongoDB C#驱动添加数组最后元素属性的过滤条件
解决方案
要给现有查询添加**Versions数组最后一个元素的Group属性不等于"12345"**的条件,你可以利用MongoDB的数组操作特性结合C#驱动的过滤器实现,具体代码如下:
完整查询过滤器代码
var applicationFilter = Builders<App>.Filter.Eq(a => a.IsDeleted, false) & Builders<App>.Filter.Exists(a => a.Versions, true) & Builders<App>.Filter.SizeGt(a => a.Versions, 0) & // 新增条件:匹配最后一个Version的Group不等于"12345" Builders<App>.Filter.Ne(a => a.Versions[-1].Group, "12345");
补充说明
C# MongoDB驱动支持通过索引器a.Versions[-1]直接表示数组的最后一个元素,底层会自动转换为MongoDB的$arrayElemAt: ["$Versions", -1]操作。如果需要显式写出MongoDB操作逻辑,也可以用以下写法:
var lastVersionGroupFilter = Builders<App>.Filter.Ne( "{ $arrayElemAt: ['$Versions', -1] }.Group", "12345" ); var applicationFilter = Builders<App>.Filter.Eq(a => a.IsDeleted, false) & Builders<App>.Filter.Exists(a => a.Versions, true) & Builders<App>.Filter.SizeGt(a => a.Versions, 0) & lastVersionGroupFilter;
两种写法功能完全一致,前者更简洁,后者更直观展示底层MongoDB操作逻辑。
内容的提问来源于stack exchange,提问作者Bhanu
相关产品推荐
相关产品推荐

