猫鼬选择返回对象ID

Posted

技术标签:

【中文标题】猫鼬选择返回对象ID【英文标题】:mongoose select returns object id 【发布时间】:2021-08-20 21:45:33 【问题描述】:

我试图从我的架构内的数组中的对象中选择一个字符串(“代码”),看起来像这样:

    const userSchema = new Schema(
    username: String,
    googleId: String,
    email: String,
    snippets: [
        types: [type: String],
        code: type: String
    ]
)

我使用 _id 属性来查找特定的 sn-p(在“sn-ps”数组中,每个对象都有自己的 _id 属性),如下所示:

User.find( 'snippets._id': req.params.id).select("code").then((snippet)

但是我只得到用户 _id 而不是“代码”,老实说,我不知道出了什么问题,所以任何帮助将不胜感激!

【问题讨论】:

没有名为“code”的***字段,select("snippets.code") 的行为是否不同? 是的,现在它只从所选用户返回我所有的“代码”sn-ps,有没有办法可以通过一个值(如 _id 属性)过滤这些结果并只返回那个一? - 收到数组后不循环遍历数组,所以我在“select”函数内部猜测? 可能在客户端使用Array.filter,或者使用聚合:***.com/questions/3985214/… 【参考方案1】:

我通过使用带有过滤器的聚合解决了这个问题

【讨论】:

以上是关于猫鼬选择返回对象ID的主要内容,如果未能解决你的问题,请参考以下文章

使用投影或选择更新猫鼬文档中对象数组内的对象

猫鼬对象关系

猫鼬选择:假不适用于位置嵌套对象

减少返回空数组

猫鼬嵌套文档返回未定义

使用猫鼬检索数组中的对象信息