如何在MongoDB中利用值数组检查值是否存在
判断MongoDB集合中是否不存在指定值的文档
方法1:直接检查单个值的存在性
针对目标值c,直接查询集合中val等于c的文档数量,若数量为0则说明不存在:
// Node.js驱动示例 const count = await db.collection('你的集合名').countDocuments({ val: 'c' }); if (count === 0) { console.log('集合中不存在val为c的文档'); }
注:如果c是变量而非字符串,去掉代码中的引号直接使用变量名即可。
方法2:从数组中筛选缺失元素
如果需要一次性找出数组里所有在集合中不存在的元素,先获取集合已有的val值,再和原数组对比:
const existingVals = await db.collection('你的集合名').distinct('val'); const missingVals = arr.filter(item => !existingVals.includes(item)); // 检查c是否在缺失列表中 if (missingVals.includes('c')) { console.log('集合中不存在val为c的文档'); }
方法3:用聚合管道验证
通过聚合管道统计集合中存在的val,再对比原数组:
const aggResult = await db.collection('你的集合名').aggregate([ { $match: { val: { $in: arr } } }, { $group: { _id: null, existingVals: { $addToSet: '$val' } } } ]).toArray(); const existingVals = aggResult.length ? aggResult[0].existingVals : []; const isCMissing = !existingVals.includes('c'); if (isCMissing) { console.log('集合中不存在val为c的文档'); }
内容的提问来源于stack exchange,提问作者Sugumar Venkatesan
相关产品推荐
相关产品推荐

