Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongoose从填充的数组中选择字段_Mongodb_Mongoose - Fatal编程技术网

Mongodb Mongoose从填充的数组中选择字段

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

我的JSON结构如下:

// 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)