node.js - Mongoose - 获取模型中数组的长度

标签 node.js mongodb mongoose

我有这个 Mongoose 架构:

var postSchema = mongoose.Schema({

    postId: {
        type: Number,
        unique: true
    },

    upvotes: [
        {
            type: Number,
            unique: true
        }
    ]

});

获取 upvotes 数组长度的最佳查询是什么?我不认为我需要使用聚合,因为我只想查询一个模型,只需要给定模型的 upvotes 数组的长度。

真的很难在网上找到这些信息 - 我搜索的所有内容都提到了我认为不需要的聚合方法。

另外,作为旁注,upvotes 数组的唯一架构属性不起作用,也许我做错了。

最佳答案

find 结果只能包含来自文档本身的内容1,而 aggregate 可以投影从文档内容派生的新值 (像数组的长度)。这就是为什么你需要为此使用 aggregate,即使你只得到一个文档。

Post.aggregate([{$match: {postId: 5}}, {$project: {upvotes: {$size: '$upvotes'}}}])

1唯一的异常(exception)是 $meta投影运算符来投影 $text 查询结果的分数。

关于node.js - Mongoose - 获取模型中数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447670/

相关文章:

javascript - 如何检查 Json Doc 是否具有 Node JS 中所有必需的键

node.js - Mongoose - 已弃用 mongodb@2.2.16 : Please upgrade to 2. 2.19 或更高版本?

sql-server - 如何在Sequelize中匹配include中的唯一键和外键而不是主键和外键

node.js - Mongoose 模式继承和模型填充

node.js - 使用Vue CDN时如何使用mapGetters?

mongodb - 解释 Mongostat 和 Mongotop 输出

node.js - Mongoose findOne 一去不复返

MongoDB .limit() 忽略 .sort()?

node.js - 无法更新mongodb中的数据

mongodb - 为什么 MongoDB 在使用自定义 id 值插入时将 _id 增加一个