Database 如何查询mongoose中数组长度最大的条目?
我的文档中的每个条目都包含一个属性Database 如何查询mongoose中数组长度最大的条目?,database,mongodb,mongoose,mongoose-schema,Database,Mongodb,Mongoose,Mongoose Schema,我的文档中的每个条目都包含一个属性myProperty:[Number]。我想返回myProperty数组长度最大的条目,或者如果有多个条目长度最大,则返回任意一个条目。我该怎么做 假设我有一个modelconstmodel=require('./myModel')最简单的方法:每次更新列表时,在单独的字段中记录myProperty的长度。例如,在名为myPropertyLength的字段中 然后,您只需执行如下简单查询: db.collection.find({}).sort({myPrope
myProperty:[Number]
。我想返回myProperty
数组长度最大的条目,或者如果有多个条目长度最大,则返回任意一个条目。我该怎么做
假设我有一个model
constmodel=require('./myModel')
最简单的方法:每次更新列表时,在单独的字段中记录myProperty
的长度。例如,在名为myPropertyLength
的字段中
然后,您只需执行如下简单查询:
db.collection.find({}).sort({myPropertyLength: -1}).limit(1)
在myPropertyLength
字段上创建索引以加快此操作
复杂方式:使用聚合添加计算数组长度的字段:
db.collection.aggregate([
{$addFields: {myLength: {$size: '$myProperty'}}},
{$sort: {myLength: -1}},
{$limit: 1}
])
最后,这种方法只是复制了更简单的方法,只是效率低了很多。此外,您不能在此聚合上使用任何索引,因此与简单方法相比,这可能是一个非常昂贵的操作。最简单的方法:每次更新该列表时,在单独的字段中记录
myProperty
的长度。例如,在名为myPropertyLength
的字段中
然后,您只需执行如下简单查询:
db.collection.find({}).sort({myPropertyLength: -1}).limit(1)
在myPropertyLength
字段上创建索引以加快此操作
复杂方式:使用聚合添加计算数组长度的字段:
db.collection.aggregate([
{$addFields: {myLength: {$size: '$myProperty'}}},
{$sort: {myLength: -1}},
{$limit: 1}
])
最后,这种方法只是复制了更简单的方法,只是效率低了很多。此外,您不能在此聚合上使用任何索引,因此与简单方法相比,这可能是一个非常昂贵的操作