Mongoose MongoDB 找到数组字段中数组长度最小的那个

Posted

技术标签:

【中文标题】Mongoose MongoDB 找到数组字段中数组长度最小的那个【英文标题】:Mongoose MongoDB find the one with smallest array-length of an array-field 【发布时间】:2021-09-27 21:49:39 【问题描述】:

我需要集合中的文档,该集合中的字段数组大小最小。 文档如下:


    "_id": ObjectId("jsd273rsdjkvn847ckjnas74"),
    "associatedUsers": [
        ObjectId("jsd273rsdjkvn847ckjnas75"),
        ObjectId("jsd273rsdjkvn847ckjnas76")
    ]

在 MongoDB 的所有文档中,我需要找到其数组中关联用户数量最少的文档。基本上是数组长度最短的那个。

【问题讨论】:

【参考方案1】:

您可以使用$addFields根据数组$size计算新字段,然后使用$sort和$limit得到数组最小的文档:

db.collection.aggregate([
    
        $addFields: 
            size:  $size: "$associatedUsers" 
        
    ,
    
        $sort:  size: 1 
    ,
    
        $limit: 1
    
])

Mongo Playground

【讨论】:

以上是关于Mongoose MongoDB 找到数组字段中数组长度最小的那个的主要内容,如果未能解决你的问题,请参考以下文章

如果未找到值,则使用 mongoose 将对象添加到数组中,否则更新字段

使用 mongoose 在 mongodb 中保存多个字段数组

如何使用 mongoose 和 NodeJs 在 Mongodb 的数组字段中插入数据

在 Mongoose/MongoDB 的文档中过滤数组、子文档、数组、文档

MongoDB/Mongoose - 仅当某个字段是唯一的时才将对象添加到对象数组中

使用 mongoose 将字符串数组推送到 mongoDB