MongoDB聚合匹配非空数组

Ste*_*efK 6 arrays aggregate match mongodb is-empty

我在 MongoDB 中有一个集合,其中包含一个字段“events”,它是一个数组。我需要为此编写一个聚合查询来检查事件数组不为空,但找不到方法来执行此操作。

我想要这样的东西:

db.collection.aggregate([
    { 
        $match: { 
            events: {
                "$empty": false 
            }
        }
    }
]);
Run Code Online (Sandbox Code Playgroud)

Ste*_*efK 15

经过一番挖掘并尝试了几个选项(包括令人讨厌的 $gte: 0 的 $size 项目,然后在该投影字段上进行匹配),我最终发现以下内容是有意义的并且实际上有效:

db.collection.aggregate([
    { 
        $match: { 
            "events.0": {
                "$exists": true 
            }
        }
    }
]);
Run Code Online (Sandbox Code Playgroud)