You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongo如何根据数组对象中的动态属性查找所有文档?

MongoDB 查询解决方案

需求1:查找prop1为"abc"的文档

直接用精确匹配语法即可:

// 匹配集合中prop1等于"abc"的文档
await db.collection.find({ prop1: "abc" })

如果你的实际需求是匹配集合中prop1值存在于外部arr数组的prop1字段中,先提取数组里的目标值列表,再用$in操作符:

// 提取arr中所有元素的prop1值
const targetProp1Values = arr.map(item => item.prop1);
// 查询集合中prop1在目标列表内的文档
await db.collection.find({ prop1: { $in: targetProp1Values } })

需求2:查找所有prop1不为"abc"的文档

使用$ne操作符实现不等于匹配:

// 匹配集合中prop1不等于"abc"的文档
await db.collection.find({ prop1: { $ne: "abc" } })

如果是要排除arr数组中所有prop1的值,就用$nin操作符:

const targetProp1Values = arr.map(item => item.prop1);
// 查询集合中prop1不在目标列表内的文档
await db.collection.find({ prop1: { $nin: targetProp1Values } })

错误写法说明

你之前写的{prop1: "arr.$.prop1"}是无效的——MongoDB会把字符串"arr.$.prop1"当作字面量去匹配prop1的值,而非引用外部数组的属性。要使用外部数组的动态值,必须先提取出目标值列表,再结合MongoDB的查询操作符实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:47:04