Как использовать $ match в MongoDB Compass для запроса массива встроенных документов? В документации используется $ find, но она недоступна в Compass - PullRequest
0 голосов
/ 20 апреля 2020

В MongoDB Compass Aggregations я пытаюсь извлечь подмножество данных, используя $ match, чтобы выбрать только определенные документы в массиве, но все, что я пытаюсь, возвращает весь массив по сравнению только с документом в массиве, который соответствует критериям.

Here's the basic format of 1 document in the collection:
_id: "1"
Question: "xyz"
Subject: "Math"
answers: Array
  0: Object
     _id: "1"
     Answer: "abc"
     CorrectAnswer: "TRUE"
  1: Object
     _id: "2"
     Answer: "lmnop"
     CorrectAnswer: "FALSE"
  2: Object
     _id: "3"
     Answer: "qrs"
     CorrectAnswer: "FALSE"

Я пытаюсь извлечь только указанные c значения темы из внешнего документа (без проблем с использованием $ match), а также только те документы в массиве ответов, где CorrectAnswer: "TRUE" (проблема). Внутри окна $ match Aggregation я пробовал оба:

{ "answers.CorrectAnswer": "TRUE" }

, а также

{ answers: {$elemMatch: {CorrectAnswer: "TRUE"}}}

Оба возвращают весь массив ответов, а не только документ в массиве с CorrectAnswer: " ИСТИНА ".

Спасибо!

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