从父模式查找子文档 - mongodb

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

我有用户架构和视图架构,这样每个用户都有多个视图文档 这是我的观点架构

  var ViewsSchema = mongoose.Schema(
    {
       userId: {
         type: mongoose.Schema.Types.ObjectId,
         ref: 'User',
       },
    })

现在我正在获取所有用户,并且我想在一个查询中获取每个用户视图。我尝试在用户模式中使用虚拟属性,如下所示

  UserSchema.virtual('views').get(function () {
          return Views.find({ userId: this._id });
    });

但它不会为每个用户文档中的视图创建任何属性。 我也尝试过这个方法

 UserSchema.virtual('views', {
         ref: 'Views',
         foreignField: 'userId',
         localField: '_id',
    });
   let doc = await User.find({}).populate('views');

但这也行不通。任何人都可以告诉我在一个查询中查找每个用户视图的最佳方法是什么?

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

您必须更改架构引用。在您的

User
模式中引用
View
模式,如下所示:

 const UserSchema = mongoose.Schema(
    {
       viewId: {
         type: mongoose.Schema.Types.ObjectId,
         ref: 'View',
       },
    })

现在,当您使用

User
模型查找文档时,只需
populate
参考,如下所示:

 const doc =  await User.find({}).populate({ path: 'viewId'});
© www.soinside.com 2019 - 2024. All rights reserved.