You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose如何对嵌套对象内的属性进行排序

排序失效原因

你的views字段是info对象的内嵌字段,不是文档的顶层字段。当前代码写的sort({ views: 1 })会尝试读取每个文档顶层的views属性做排序,而你的文档顶层根本没有这个字段,拿不到排序参考值,自然返回无序结果。

修复代码

MongoDB 操作内嵌字段需要用点语法写全字段路径,修改排序参数即可:

// 升序:views 从小到大,返回播放量最低的10条
const song = await Song.find({}).sort({ "info.views": 1 }).limit(10)

// 降序:views 从大到小,返回播放量最高的10条,按需选用
// const song = await Song.find({}).sort({ "info.views": -1 }).limit(10)
补充说明

不止排序,只要是操作内嵌字段,不管是查询过滤、字段筛选还是更新,都要用点语法指定完整路径,比如要筛选专辑类型的歌曲,查询条件要写成:

Song.find({ "info.album": true })

注意点语法的字段路径要加引号,避免JS解析报错。

内容的提问来源于stack exchange,提问作者Arbër

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:57:18