// 查询所有包含指定字段的文档
// 替换 "fieldName" 为你要检查的字段名
db.collection('yourCollection').find({
  fieldName: { $exists: true }
})

// 例如,查询所有包含 "email" 字段的文档
db.collection('users').find({
  email: { $exists: true }
})

// 如果你想查询字段不为 null 的文档
db.collection('yourCollection').find({
  fieldName: { $exists: true, $ne: null }
})

// 将结果转换为数组
db.collection('yourCollection').find({
  fieldName: { $exists: true }
}).toArray()

查询多个字段组合条件

// 查询同时拥有多个字段的文档
db.collection('yourCollection').find({
  fieldName1: { $exists: true },
  fieldName2: { $exists: true }
})

// 查询至少拥有其中一个字段的文档
db.collection('yourCollection').find({
  $or: [
    { fieldName1: { $exists: true } },
    { fieldName2: { $exists: true } }
  ]
})

// 统计包含特定字段的文档数量
db.collection('yourCollection').countDocuments({
  fieldName: { $exists: true }
})

// 同时统计包含与不包含该字段的文档数量
db.collection('yourCollection').aggregate([
  {
    $group: {
      _id: { hasField: { $exists: "$fieldName" } },
      count: { $sum: 1 }
    }
  }
])

在 MongoDB 中,$exists 操作符是查询某个字段是否存在的主要方法。结合其他查询条件,可以灵活筛选出符合业务需求的文档。

查询某个字段不存在的文档

// 查询不包含指定字段的文档
// 替换 "fieldName" 为你要检查的字段名
db.collection('yourCollection').find({
  fieldName: { $exists: false }
})

// 例如,查询所有不包含 "email" 字段的文档
db.collection('users').find({
  email: { $exists: false }
})

// 统计不包含特定字段的文档数量
db.collection('yourCollection').countDocuments({
  fieldName: { $exists: false }
})

// 将结果转换为数组
db.collection('yourCollection').find({
  fieldName: { $exists: false }
}).toArray()

使用 $exists: false 可以查询所有不包含指定字段的文档。这在数据清理或检查数据完整性时非常有用。