能否使用MongoEngine查询Mongo文档中数组的最后一个元素?
使用MongoEngine查询列表最后一个元素满足条件的文档
你可以通过MongoEngine的__expr查询结合MongoDB的数组聚合运算符实现需求,无需编写原生raw查询。
方法1:用$arrayElemAt定位最后一个元素
利用$arrayElemAt获取列表最后一个元素的指定字段(索引-1代表数组最后一位),再与目标值做相等判断:
X.objects(__expr={'$eq': [{'$arrayElemAt': ['$some_list.val', -1]}, 'Test Value']})
方法2:用$last运算符
$last可直接提取数组的最后一个元素,结合字段路径就能拿到最后一个元素的val值,再做匹配:
X.objects(__expr={'$eq': [{'$last': '$some_list.val'}, 'Test Value']})
两种方式都能精准匹配**仅列表最后一个元素的val等于'Test Value'**的文档,其中$arrayElemAt支持MongoDB 3.2及以上版本,$last需要MongoDB 3.4及以上版本。
内容的提问来源于stack exchange,提问作者ScriptSurfer
相关产品推荐
相关产品推荐

