Ошибка Монго - Невозможно канонизировать запрос: BadValue Неподдерживаемая опция проекции - PullRequest
0 голосов
/ 19 июня 2019

Я новичок в MongoDB и пытаюсь выполнить запрос. У меня есть коллекция компании и массив идентификаторов компании. Я хотел бы получить результаты, где attributes.0.ccode существует, а attributes.0.ccode не является пустым и будет проверяться в пределах идентификаторов, предоставленных в массиве (cdata)

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

Я думаю, что это проблема с брекетингом, но не могу понять, где.

Любая помощь высоко ценится.

1 Ответ

1 голос
/ 19 июня 2019

В вашем коде { _id: { $in: cdata } } интерпретируется как запрос, а все остальное, начиная с ,{ "attributes.0.ccode": { $e.., как проекция (какое поле отображать). Попробуйте изменить код, чтобы _id: {$in ...}, а остальная часть запроса принадлежала одному и тому же объекту более высокого уровня. Примерно так:

var query = Company.find({
  _id: {
    $in: cdata
  },
  "attributes.0.ccode": {
    $exists: true
  },
  $and: [
    {
      "attributes.0.ccode": {
        $ne: ""
      }
    }
  ]
}).select({"attributes": 1}).sort({});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...