我是MongoDB的新手,正在尝试执行查询。我有一个公司集合和公司ID数组。我想获得attributes.0.ccode
存在且attributes.0.ccode
不为空的结果,并将在数组(cdata
)提供的ID中进行检查
var query = Company.find({ _id: { $in: cdata } },{ "attributes.0.ccode": { $exists: true }, $and: [ { "attributes.0.ccode": { $ne: "" } } ] }).select({"attributes": 1}).sort({});
我得到的错误是
"$err": "Can't canonicalize query: BadValue Unsupported projection option: attributes.0.ccode: { $exists: true }",
"code": 17287
我认为这是一个包围问题,但无法弄清楚何处。
我们非常感谢您的帮助。
答案 0 :(得分:1)
在您的代码中,{ _id: { $in: cdata } }
被解释为查询,其他所有内容都从,{ "attributes.0.ccode": { $e..
开始作为一个Projection(要显示的字段)。尝试重构代码,以使_id: {$in ...}
和查询的其余部分属于同一个更高级别的对象。像这样:
var query = Company.find({
_id: {
$in: cdata
},
"attributes.0.ccode": {
$exists: true
},
$and: [
{
"attributes.0.ccode": {
$ne: ""
}
}
]
}).select({"attributes": 1}).sort({});