如何在猫鼬中将对象字段作为数组获取?

Posted

技术标签:

【中文标题】如何在猫鼬中将对象字段作为数组获取?【英文标题】:How to get an object field as an array in mongoose? 【发布时间】:2020-10-17 04:24:14 【问题描述】:

您好,我有一个如下所示的 mongoose 架构,

const followingFollowersSchema = mongoose.Schema(
  follower: 
     type: mongoose.Schema.ObjectId,
     ref: 'User'
  ,
  following: 
     type: mongoose.Schema.ObjectId,
     ref: 'User'
  ,
);

我在调用时创建了一个路由,它过滤当前登录用户正在关注的所有用户并显示以下输出,


  "status": "success",
  "results": 1,
  "data": 
    "following": [
            
              "_id": "5ef4cd0205070d87156e19da",
              "following": 
                  "_id": "5eeb92d69fceed6d91ad5743",
                  "name": "X Y"
            
          
      ]
  

但我想显示这样的输出,


  "status": "success",
  "results": 1,
  "data": 
      "following": [
          
              "_id": "5eeb92d69fceed6d91ad5743",
              "name": "X Y"
          
      ]
  

我怎样才能做到这一点?任何帮助将不胜感激。

【问题讨论】:

查看这篇文章:alexanderzeitler.com/articles/… 【参考方案1】:

您可以使用$addFields 替换现有字段并使用$map 转换内部数组:

let result = Model.aggregate([
    
        $addFields: 
            "data.following": 
                $map: 
                    input: "$data.following",
                    in: "$$this.following"
                
            
        
    
])

Mongo Playground

【讨论】:

以上是关于如何在猫鼬中将对象字段作为数组获取?的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中将 ObjectId 设置为数据类型

如何在猫鼬模型内的数组中查找对象?

如何在猫鼬中保存子文档的数组?

如何在猫鼬中更新嵌套数组值

在猫鼬中仅更改整个嵌入式文档数组的一个字段

在猫鼬中仅更改整个嵌入式文档数组的一个字段