MongoDB запросы и анализ результатов - PullRequest
0 голосов
/ 02 декабря 2011

Моя база данных структурирована следующим образом:

{ title : "My First Post", author: "Jane",
  comments : [{ by: "Abe", text: "First" },
              { by : "Ada", text : "Good post" } ]
}

У меня возникают проблемы при записи следующего:

  • Получить все сообщения, которые Ада не комментировала
  • Получить все сообщения, на которые Абэ прокомментировал «Первый»
  • После того, как сообщение было найдено и сохранено в переменной post, отобразите текст комментария Абэ

Спасибо.

1 Ответ

5 голосов
/ 02 декабря 2011

Получить все сообщения, на которые Ada не комментировать

В MongoDB есть оператор $ nin (означает не в), вы можете написать запрос следующим образом:

db.my.collection.find({'comments.by': {$nin: ['Ada']}});

Получить все сообщения, которые Абэ прокомментировал "Первый"

Поскольку комментарии хранятся в массиве, абсолютно законно обращаться к отдельным элементам по их индексу. Для достижения этой цели вы можете написать следующий запрос:

db.my.collection.find({'comments.0.by': 'Abe'});

Как только сообщение будет найдено и сохранено в переменной сообщения, отобразите текст комментария Абэ

Это зависит от вашего клиентского приложения, как вы представляете полученные данные.

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