我正在为MongoDB Collection构建一个简单的查询。该模型如下所示:
{
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
}
}
我哪里错了?谁能帮我这个? 谢谢!
答案 0 :(得分:0)
由于您构建查询的方式,MongoDB引擎尝试将email
关键字解析为user
字段上的运算符。
如果要检查文档是否定义了嵌套属性,可以使用点表示法:
Document.find({
a: {
$exists: true,
$not: {
$size: 0
}
},
"user.email": {
$exists: true
}
})