【问题标题】:How to find an ID inside a document property (array) and return the populated information of that object如何在文档属性(数组)中查找 ID 并返回该对象的填充信息
【发布时间】:2021-08-14 01:56:45
【问题描述】:

我在 MongoDB 中有以下文档。如何在 likes 数组中找到特定 ID 并返回该对象的填充信息?

这是文件:

{ _id: ObjectId("60a90f0e1f4af802e8b893e6"),
  status: 'Available',
  likes: 
   [ ObjectId("60a8e0b9baa1572b847931ed"),
     ObjectId("60aa342cb6b39e3024453465") ],
  name: 'coba',
  age: '1 Year',
  __v: 0 }

这是我尝试过的函数,但它返回 404 错误,尽管您可以看到 id 实际存在于 likes 数组中。

    const [foundUser] = await PetsModel.find(
      {
        likes: { $in: ["60a8e0b9baa1572b847931ed"] }
      },
      { likes: 1 }
    ).populate({
      path: 'likes',
      select: {
        __v: 0,
        createdAt: 0,
        updatedAt: 0,
        password: 0
      }
    });

    res.status(201).json({
      success: true,
      data: foundUser.likes
    });
  

【问题讨论】:

    标签: javascript arrays mongodb mongoose


    【解决方案1】:

    你告诉 MongoDB 搜索一个字符串,而不是一个 id。因此,您必须将字符串转换为 id,以便 MongoDB 可以搜索它。代码应如下所示:

    const mongoose = require('mongoose');
    
    const [foundUser] = await PetsModel.find(
          {
            likes: { $in: [ mongoose.Types.ObjectId("60a8e0b9baa1572b847931ed") ] }
          },
          { likes: 1 }
        ).populate({
          path: 'likes',
          select: {
            __v: 0,
            createdAt: 0,
            updatedAt: 0,
            password: 0
          }
        });
    
        res.status(201).json({
          success: true,
          data: foundUser.likes
        });
    

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 2021-05-05
      • 2014-04-02
      • 2017-10-26
      • 2021-06-03
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多