【问题标题】:How to sort mongo docs with an array of elements by mongoose model如何通过猫鼬模型对具有元素数组的mongo文档进行排序
【发布时间】:2025-12-12 12:20:16
【问题描述】:

我正在使用 mongodb 并使用 mongoose 来操作数据库。

这里我有一组文档,我想按数组中元素的数量对它们进行排序。

有没有办法在 mongoose 中按数组长度对它们进行排序?

以下是 db 的示例。我想按标签数量对它们进行排序。 OR by likeBy 的数量(这是一个 userId 的数组)

【问题讨论】:

标签: node.js mongodb sorting mongoose


【解决方案1】:

您可以创建一个辅助字段来按该字段排序,如下所示:

  • 首先$addFields 使用$size 创建辅助字段,其值为数组大小。
  • 然后按该值排序
  • $project 不显示辅助字段。
db.collection.aggregate({
  "$addFields": {
    "aux_size": {
      "$size": "$tags"
    }
  }
},
{
  "$sort": {
    "aux_size": 1
  }
},
{
  "$project": {
    "aux_size": 0
  }
})

例如here

另外,如果你使用猫鼬,我认为你不需要这个,因为模型说tags 字段必须是一个数组。但如果tags 字段可能是另一种类型(字符串、数字、布尔值...),您可以使用$isArray 将该文档设置为长度为0(例如here)或过滤它们(例如here )

【讨论】:

  • 这是我需要的谢谢
最近更新 更多