MongoDB извлекает значения массива ObjectId

Я создаю простое приложение, которое будет отслеживать каждый раз, когда игрок убивает другого игрока. Это означает, что когда они убивают игрока, убитый игрок будет добавлен в их userarray (содержащий всех игроков, которых они убили), которые затем могут быть использованы для статистики и т. д. Проблема с сохранением только имен пользователей в виде строковых значений в array заключается в том, что это займет больше места, и мне потребуется больше времени, чтобы получить другие данные.

Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как хранить убийства игрока. Мне нужно иметь возможность захватить ключ userarray, получить каждый username, а затем отобразить его.

Не приведет ли это к задержке, поскольку он должен извлекать каждого отдельного пользователя в этом массиве? Есть ли способ получить userarray со всеми значениями, уже проанализированными запросом?

Структура пользовательской коллекции (вместе с ip, date и т. д.);

введите здесь описание изображения

Структура для второй коллекции;

введите здесь описание изображения

введите здесь описание изображения

И я пытаюсь получить такие данные;

введите здесь описание изображения


person Timothy Hanes    schedule 19.02.2014    source источник
comment
Ну ты и остался без данных. вопрос не полный!!!   -  person Sarath Nair    schedule 19.02.2014


Ответы (1)


Хотя это, вероятно, можно было бы сделать с некоторыми дополнительными объяснениями, чем предоставленные скриншоты, вы, похоже, боретесь с основной концепцией проектирования схемы в MongoDB, которую мы можем рассмотреть в ответе.

Как вы заметили, у вас есть поле userarray в документе, содержащем список ссылок ObjectId. Предположительно, они относятся к документам, которые находятся либо в другом месте коллекции, либо в другой собственной коллекции.

Большая проблема заключается в том, что «MongoDB не выполняет соединения», и поскольку вы ожидаете получить «свойства» из ссылочного документа, этого не произойдет. Конечно, не простым способом.

Итак, что вам вероятно нужно, это встроенные документы, где все данные, на которые вы хотите сослаться, фактически содержатся внутри родительского документа, который вы извлекаете. Но опять же, в зависимости от ваших потребностей в использовании, вы можете захотеть что-то еще. Для этого рекомендуется потратить некоторое время на чтение раздела Моделирование данных из Документация по MongoDB. Здесь обсуждаются различные подходы, и это поможет вам получить понимание.

Если после всего прочитанного вы действительно думаете, что ссылки — это то, что вам нужно, то рекомендуется зайдите в Google, чтобы найти библиотеку для вашего языка, которая поможет вам в этом.

Во всяком случае, общие рассуждения слишком широки. Лучше прочтите, попробуйте, а затем задайте вопросы по конкретным проблемам, которые у вас есть.

person Neil Lunn    schedule 19.02.2014