You need to enable JavaScript to run this app. 如何通过对象数组中的_id字段使用Mongoose执行查询?
优惠活动
大模型
产品
解决方案
定价
更多

如何通过对象数组中的_id字段使用Mongoose执行查询?

问题根因

你使用的members._id写法无法生效的原因是:members是对象数组,数组本身不存在_id属性,只有数组内的每一个元素对象才持有_id字段,因此需要先把所有元素的_id提取出来组成一维的id数组,再传给$in操作符。

正确写法

首先用map方法遍历对象数组提取所有_id:

// 提取_id数组
const memberIdList = members.map(member => member._id);
// 执行查询
const files = await File.find({ _id: { $in: memberIdList } });

注意事项

如果你的members数组中存储的_id是字符串格式,而Mongoose schema中_id默认是ObjectId类型,也可以手动做类型转换保证查询匹配:

const mongoose = require('mongoose');
const memberIdList = members.map(member => mongoose.Types.ObjectId(member._id));
const files = await File.find({ _id: { $in: memberIdList } });

内容的提问来源于stack exchange,提问作者Vivek Jaiswal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 12:06:01