node.js - 如何在 Mongoose 中将对象字段作为数组获取?

标签 node.js json mongodb mongoose

您好,我有一个如下所示的 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"
          }
      ]
  }
}
我怎样才能做到这一点?任何帮助,将不胜感激。

最佳答案

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

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

关于node.js - 如何在 Mongoose 中将对象字段作为数组获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62596911/

相关文章:

java - boolean 字段的 JSON Post 请求默认发送 false

mongodb - 不要查询 Mongoose 中等于 NULL 的参数?

node.js - 针对浏览器和 nodejs 的模块模式

javascript - d3.js 不读取 JSON (d3.js + dc.js + crossfilter)

javascript - 在 Node js 中水平生成视频快照。

javascript - 在 JavaScript 中过滤 JSON 子对象

javascript - MongoDB,将新值推送到数组而不复制键

java - JSON.parse() 等效于 Java 的 mongo 驱动程序 3.x

node.js - Mongo DB 文档只返回 "_id" "$oid"

node.js - 如何将多个数据从 sequelize promise 传递给 View 而不使用内部 then 方法