在mongodb中通过mongoose在expressjs中聚合

cld4siwp  于 2023-10-19  发布在  Go
关注(0)|答案(1)|浏览(134)

我设计了一个数据库,它有一个名为categories的模型。在这个模型中,每个类别都有一个id和一个parent属性,用于显示该类别是否在另一个类别的分支下(例如,nodejs是web development类别的子类别)。我想通过一种方式,我可以显示父母和类别,有他们的id作为父母。这是一个父文档的示例:

{
  "title": "web development",
  "_id": "64f04d6b81e4439030ed6073"
  "__v": 0
}

这是一个子文档的例子:

{
  "title": "nodejs",
  "parent": "the id of web development"
  "__v": 0
}

我希望我的输出看起来像这样,当我只想获取父母:

[
 {
     "_id" : "64f04d6b81e4439030ed6073",
     title:"web development",
     children : [the categories that have the mentioned id in parent property]
 },
    other parents....
    ]

我想返回一个对象数组中的每个父对象,每个对象都有一个children属性,其中包括指定该父对象的其他类别。如果您能给我给予任何帮助或提示,我将不胜感激。

46qrfjad

46qrfjad1#

据我所知,你想要的是让所有的孩子为他们各自的父母!
如果你想实现,你可以将foriegn键存储在children表中作为parent的引用。

const blogSchema = new mongoose.Schema(

    {
        name: String,
        description: String,
        userId:
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'user',
        },
        image: {
            type: String,
            required: [true, 'image cannot be null'],
        }
    },

)

这个模型是从博客应用程序上,我目前的工作!
你看我在这里做的是把用户id作为引用存储在我的blog表中。
现在我怎么能得到所有的博客到各自的用户???或者在您的情况下,孩子们为各自的父母,这里是示例查询。

const blogs = await blogModel.find({
  userId: user.id
   })

希望这能帮到你

相关问题