如何使用MongoDB查询检查对象中是否存在属性?

如何使用MongoDB查询检查对象中是否存在属性?,mongodb,Mongodb,我正在为我的MongoDB集合构建一个简单的查询。模型如下所示: { a: [], user: { email: String, name: String, surname: String } } 我需要从查询中获得的是将“a”作为非空数组并设置为“user.email”的所有文档。我的问题是: Document.find({ a: { $exists: true,

我正在为我的MongoDB集合构建一个简单的查询。模型如下所示:

{
    a: [],
    user: {
        email: String,
        name: String,
        surname: String
    }
}
我需要从查询中获得的是将“a”作为非空数组并设置为“user.email”的所有文档。我的问题是:

Document.find({
        a: {
            $exists: true,
            $not: {
                $size: 0
            }
        },
        user: {
            $exists: true,
            'email': {
                $exists: true
            }
        }
    })
问题是,当我执行查询时,我的服务器返回一个500错误,表示:

{
    "error": {
        "name": "MongoError",
        "message": "unknown operator: email",
        "waitedMS": 0,
        "ok": 0,
        "errmsg": "unknown operator: email",
        "code": 2
    }
}
我哪里做错了?有人能帮我吗?
谢谢大家!

由于您构建查询的方式,MongoDB引擎尝试在
用户
字段上作为操作员解析
电子邮件
关键字

如果要检查文档上是否定义了嵌套属性,可以使用点表示法:

Document.find({
        a: {
            $exists: true,
            $not: {
                $size: 0
            }
        },
        "user.email": {
            $exists: true
        }
    })