Несколько позиционных операторов в позиционной проекции - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь получить данные, запрашивая что-то вроде этого здесь, но кажется, что mongodb не допускает двухпозиционную проекцию одновременно. Я попытался гуглить его на inte rnet, но не могу найти решение.

MyModel.find({}, { 
   "_id": 0,
   "emailAddress": 1,
   "alib.elements.$.questions.$.values": 1
})
.then(data => console.log(data));

Вот ошибка в случае, если это помогает.

MongoError: Позиционная проекция «alib.elements. $. questions. $. values» содержит позиционный оператор более одного раза.

Ожидаемый результат:

{
 alib: {
   elements: [
         {
             questions: [
               {
                 values: ....
               }
             ]
          }
    ]
  }

1 Ответ

1 голос
/ 15 апреля 2020

Согласно документации :

В проекционном документе может отображаться только один позиционный оператор $.

Вы можете использовать double $ map оператор вместо:

db.collection.aggregate([
    {
        $project: {
            "alib.elements": {
                $map: {
                    input: "$alib.elements",
                    in: {
                        questions: {
                            $map: {
                                input: "$$this.questions",
                                in: { values: "$$this.values" }
                            }
                        }
                    }
                }
            } 
        }
    }
])

Пн go Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...