javascript - 如何在文档属性(数组)中查找 ID 并返回该对象的填充信息
问题描述
我在 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
});
解决方案
在那里你告诉 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
});
推荐阅读
- reactjs - socket.io vs swr 用于更新实时内容
- android - 如何正确修复“此项目使用 AndroidX 依赖项,但未启用 'android.useAndroidX' 属性。” 在 Unity 2019 中
- c# - C#类与结构的误解
- jsp - 在jsp中的表字段处创建链接
- r - 呈现不同页面的两个 actionButton(s)
- java - 计算视频时长需要太多时间
- c++ - 如何修复“无运算符”!=“匹配这些操作数”?
- python - Numpy / Pandas:从列表中随机选择 n 个项目,其中 n 是随机整数,对于每个索引
- flutter - 飞镖检查未完成的未来
- asp.net - 将其移动到子文件夹后,aspx 页面无法正常工作