Mongodb Mongoose从填充的数组中选择字段
我的JSON结构如下:Mongodb Mongoose从填充的数组中选择字段,mongodb,mongoose,Mongodb,Mongoose,我的JSON结构如下: // Users Collection [{ "id": "1", "email": "user1@mail.com", "contacts": [ { "user": "2", // reference "nickname": "blub" }, { "user": "3", // reference "nickname": "blub" }, ], "otherfie
// Users Collection
[{
"id": "1",
"email": "user1@mail.com",
"contacts": [
{
"user": "2", // reference
"nickname": "blub"
},
{
"user": "3", // reference
"nickname": "blub"
},
],
"otherfield": "anything"
}]
{
"id": "1",
"email": "user1@mail.com",
"contacts": [
{
"user": {
"id": "2",
"email": "user2@mail.com",
// without other fields
},
"nickname": "blub"
}
],
"otherfield": "anything"
}
User
对象包含一个数组contacts
,它基本上表示一个引用的用户列表。为了允许每个用户存储额外的数据(如昵称
),我有一个对象数组,而不是objectid数组
现在,我想用指定要解析的字段(例如id和电子邮件)填充联系人。因此,预期输出如下所示:
// Users Collection
[{
"id": "1",
"email": "user1@mail.com",
"contacts": [
{
"user": "2", // reference
"nickname": "blub"
},
{
"user": "3", // reference
"nickname": "blub"
},
],
"otherfield": "anything"
}]
{
"id": "1",
"email": "user1@mail.com",
"contacts": [
{
"user": {
"id": "2",
"email": "user2@mail.com",
// without other fields
},
"nickname": "blub"
}
],
"otherfield": "anything"
}
我试过这样的东西
User.findById(id)
.populate('contacts.user')
.select('contacts.user.email')
但是我的联系人数组只包含空对象
如果我尝试以下方法:
User.findById(id).populate({
path: 'contacts.user',
select: 'email'
})
结果是没有任何填充的父用户:
{
email: "user1@mail.com",
id: "1"
}
试一试
请参见的填充多个路径。尝试
请参见填充的多个路径。最后我发现了我在中忽略的内容(谢谢你@Mikey)
最后,我发现了我在文章中忽略的东西(谢谢你@Mikey)