使用mongoose nodejs在另一个集合mongoDB中填充集合

瑞罗查

我正在尝试从特定用户那里获取所有信息。我已经可以填充其中包含的集合,但是无法填充这些集合中的一个非常重要的属性,即用户。我有以下代码重印了模型以及已经为查询完成的代码。我还介绍了我能得到的结果以及我想要的例子。感谢你们对我的帮助。

我在Mongoose中有以下模板:

const schema = new Schema(
{
   .....
    nameEvent:
    {
        type: String,
        required: true
    },
    owner:
    {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    },
    invited:
    [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }],
    participants:
    [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }]
});

module.exports = mongoose.model('Meeting', schema);

和:

const schema = new Schema(
{
    name:
    {
        type: String,
        required: true
    },
   ...
    photoPath:
    {
        type: String,
        required: true
    },
    qrcodePath:
    {
        type: String,
        required: false
    },
    receiveInvites:
    {
        type: Boolean,
        required: true
    },
    invited:
    [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Meeting'
    }],
    participating:
    [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Meeting'
    }],
    owned:
    [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Meeting'
    }]
});

module.exports = mongoose.model('User', schema);

现在,我想加载所有用户信息并填充一些我需要的字段。

当我运行以下代码时:

exports.getByid = async(id) =>
{
    const res = await User.findById(id, '_id name photoPath invited participating owned friends')
    .populate('invited', 'nameEvent owner date time numberPlayer participants')
    .populate('participating', 'nameEvent owner date time numberPlayer participants')
    .populate('owned', 'nameEvent owner date time numberPlayer participants');
    return res;
}

我得到以下JSON:

"result": {
  "invited": [],
  "participating": [
    {
      "participants": [
        "5c8a9e46ba60372df4483d2f"
      ],
      "_id": "5c8a9e5dba60372df4483d30",
      "nameEvent": "terças",
      "numberPlayer": 10,
      "date": "19/03/2019",
      "time": "20:00",
      "owner": "5c8a9e46ba60372df4483d2f"
    },
    {
      "participants": [
        "5c8a9e46ba60372df4483d2f"
      ],
      "_id": "5c8aad5eba60372df4483d34",
      "nameEvent": "quintas",
      "numberPlayer": 3,
      "date": "21/03/2019",
      "time": "15:00",
      "owner": "5c8a9e46ba60372df4483d2f"
    }
  ], ....
}

但是我想要有关所有者用户的更多信息(名称和photoPath)。

如何填充这些其他字段?

这就是我要寻找的:

{
  "participants": [
    "5c8a9e46ba60372df4483d2f"
  ],
  "_id": "5c8aad5eba60372df4483d34",
  "nameEvent": "quintas",
  "numberPlayer": 3,
  "date": "21/03/2019",
  "time": "15:00",
  "owner": {
    "id":"5c8a9e46ba60372df4483d2f",
    "name":"name User",
    "photoPath": "photoPath.jpg"
  }
}
唐·布罗迪

您并不是要在代码中填充这些字段。如果要从对象返回所有字段,请尝试以下操作:

exports.getByid = async (id) => {
  const res = await User.findById(id, '_id name photoPath invited participating owned friends')
    .populate({ path: 'invited' })
    .populate({ path: 'participating' })
    .populate({ 
        path: 'owned',
        populate: { path: 'owner' }
    });
  return res;
}

看看一个深刻的人口从猫鼬文档。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用mongodb中主集合的objectID在另一个集合中查找

如何使用另一个集合中的信息过滤MongoDB集合?

MongoDB 使用另一个集合中的另一个字段更新字段

如何使用新对象填充集合,从另一个集合复制属性

如何使用同一数据库中另一个集合的数据创建 mongoDB 集合

如何使用mongodb合并两个集合结果和另一个集合

在 mongodb 中的另一个集合的 foreignField 上使用 $group 进行分组

mongodb-根据使用量计数从一个集合中获取顶级项目,作为另一个集合中的字段

如何使用 Mongoose 在 mongoDB 中的 3 个集合中填充

如何使用集合理解在集合中查找不在另一个集合中的单个元素

在猫鼬中使用另一个集合数组填充数据

如何使用MongoDB或Mongoose在一个查询中对两个集合进行分组

使用聚合管道在MongoDB中将一个集合中的功能添加到另一个中

使用 mongoose 在 Mongo Atlas 中创建一个集合

如何检索一个集合中的值并将其添加到另一个集合中.. Mongoose , Node JS

如果另一个列值在列表或集合中,则使用二进制值在pandas数据框中填充新列

使用 HashSet 根据 T 的属性删除不在另一个集合中的项目

使用集合将列中的重复项转移到另一个页面

如何使用pymongo从MongoDB复制一个集合并将其粘贴到另一个空集合?

使用 Java 8 Streams 从另一个不同类型的集合更新集合

如何使用查询的任何其他集合返回另一个集合的数据?

JavaScript 是否提供了一种仅使用另一个集合中的一个属性来构建新集合的方法?

使用声明式查找一个集合中的字符串是否是另一个集合中的字符串的子字符串?

在MongoDB中,如何在find()中使用等效于$ out的运算符将数据复制到另一个集合中?

您如何使用 MongoDB $lookup 返回子字符串,然后使用该子字符串检查另一个集合中的内容

使用c#驱动程序在MongoDB中使用此对象的另一个属性更新嵌套集合中的对象属性

如何使用PyMongo将索引从一个集合复制到另一个集合?

需要对使用mongodb聚合查询从另一个集合连接的多个字段进行不同的计数

两个 Document 属性中的一个未插入到 mongoDB 集合中,使用:Mongoose 和 Express