Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何查询mongoose中数组长度最大的条目?_Database_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

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}
])
最后,这种方法只是复制了更简单的方法,只是效率低了很多。此外,您不能在此聚合上使用任何索引,因此与简单方法相比,这可能是一个非常昂贵的操作