使用迭代数组对象创建新对象并在 mongodb 中附加字符串

问题描述 投票:0回答:1

我想将每个数组合并到一个新对象中,并将字符串附加到其中

我有以下代码:

let answer1 = await Answer.aggregate([
      { $match: { _id: mongoose.Types.ObjectId(req.query.answer5) } },
      {
        $lookup: {
          from: "products",
          localField: "product_result",
          foreignField: "_id",
          as: "product_result",
        },
      },
      {
        $lookup: {
          from: "categories",
          localField: "product_result.category",
          foreignField: "_id",
          as: "slug_category",
        },
      },
      {
        $lookup: {
          from: "categories",
          localField: "slug_category.parent",
          foreignField: "_id",
          as: "parent_slug",
        },
      },
      {
        $lookup: {
          from: "questions",
          localField: "question_id",
          foreignField: "_id",
          as: "question",
        },
      },
      { "$unwind": "$slug_category" },
      {
        "$project": {
          "product_result.name": 1,
          "product_result.image_thumbnail": 1,
          "product_result.slug": 1,
          "product_result.parent_slug": "$parent_slug.slug",
          "question.question": 1,
        }
      },
      { $limit: 1 },
    ]).exec();

我得到了这样的结果

[
  {
    slug: 'smooth-silky',
    name: 'Smooth & Silky',
    image_thumbnail: 'cfad098c70bfd0848f659b3dc26daabf2e5feb39.png', 
    parent_slug: 'hair-mask'
  },
  {
    slug: 'silky-black',
    name: 'Silky Black',
    image_thumbnail: 'cfad098c70bfd0848f659b3dc26daabf2e5feb39.png',
    parent_slug: 'hair-mask'
  }
]

我想要这样的结果

[
  {
    name: 'Smooth & Silky',
    image_thumbnail: 'cfad098c70bfd0848f659b3dc26daabf2e5feb39.png', 
    slug: '/hair-mask/smooth-silky',
  },
  {
    name: 'Silky Black',
    image_thumbnail: 'cfad098c70bfd0848f659b3dc26daabf2e5feb39.png',
    slug: '/hair-mask/silky-black',
  }
]

我尝试使用 concatArrays 合并 slug 和父 slug 以创建一个新对象,但我没有得到与上面相同的结果,而且我无法使用它附加字符串,我如何实现上面这样的结果? 预先感谢

node.js mongodb mongodb-query nosql
1个回答
0
投票

使用

$project
运算符而不是
$concat
更新您的
$concatArrays
阶段。

 {
    "$project": {
      "product_result.name": 1,
      "product_result.image_thumbnail": 1,
      "product_result.slug": {"$concat" : ["/","$parent_slug.slug","/","$product_result.slug" ]},
      "question.question": 1,
    }
  },
© www.soinside.com 2019 - 2024. All rights reserved.