如何查询 mongoose 中数组长度最大的条目?
Posted
技术标签:
【中文标题】如何查询 mongoose 中数组长度最大的条目?【英文标题】:How can I query for the entry or entries with the greatest array length in mongoose? 【发布时间】:2020-04-22 07:32:48 【问题描述】:我文档中的每个条目都包含一个属性myProperty : [Number]
。我想返回 myProperty
数组长度最大的条目,或者如果有多个长度最大的条目,则返回其中任何一个。我怎样才能做到这一点?
假设我有模特const Model = require('./myModel');
【问题讨论】:
【参考方案1】:最简单的方法:每次更新列表时,在单独的字段中记录myProperty
的长度。例如,在名为myPropertyLength
的字段中。
然后你可以做一个简单的查询,比如:
db.collection.find().sort(myPropertyLength: -1).limit(1)
在myPropertyLength
字段上创建索引以加快此操作。
复杂的方式:使用聚合添加一个计算数组长度的字段:
db.collection.aggregate([
$addFields: myLength: $size: '$myProperty',
$sort: myLength: -1,
$limit: 1
])
最后,这种方法只是复制了更简单的方法,只是效率低了很多。此外,您不能在此聚合上使用任何索引,因此与简单方法相比,这可能是一个非常昂贵的操作。
【讨论】:
以上是关于如何查询 mongoose 中数组长度最大的条目?的主要内容,如果未能解决你的问题,请参考以下文章
查看单个文档的数组时,mongoose .find() 没有结果
如何使用 Mongoose 查询过滤到数组类型字段中具有指定值的文档?