如何用MongoDB查询获取非空的嵌套manuelActivityInfo对象
修正后的MongoDB查询语句
要仅获取包含非空manuelActivityInfo对象的记录,需同时排除该字段为null或空对象{}的情况,以下是两种可行的查询方案:
方案1:严格校验(适配复杂场景)
适用于需要确保manuelActivityInfo是存在、非null且包含实际属性的对象:
db.collection.find({ "manuelActivityInfo": { $exists: true, $ne: null, $type: "object", $expr: { $gt: [{ $size: { $objectToArray: "$manuelActivityInfo" } }, 0] } } })
$exists: true:确保字段存在$ne: null:排除字段为null的记录$type: "object":确保字段类型是对象$objectToArray+$size:校验对象包含至少一个属性,避免空对象
方案2:简洁写法(常规场景适用)
如果你的数据中manuelActivityInfo仅存在null、空对象、有效对象三种情况,可使用更简洁的条件:
db.collection.find({ "manuelActivityInfo": { $ne: null, $ne: {} } })
内容的提问来源于stack exchange,提问作者Erdal Tutku YILMAZ
相关产品推荐
相关产品推荐

