#javascript #node.js #database #mongodb
Вопрос:
Я создаю игру, и с предметами, хранящимися в моей базе данных, я думал о том, чтобы хранить их с таким весом, чтобы вероятность получить предмет составляла xx%.
Есть ли способ сделать это с помощью MongoDB или любой другой альтернативы, учитывая, что база данных еще не заполнена, я ничего не смог найти в Google
Я использую Node.js для части кода, и я МОГУ делать что-то в части кода, например, генерировать случайное число или что-то в этом роде, если это необходимо
Я думал о том, чтобы просто сгенерировать случайное число от 0 до 1. Проверьте вес ниже или равный и выберите документ случайным образом, чтобы чем выше вес, тем меньше вероятность того, что он будет разграблен, будет ли это уместно?
Ответ №1:
Ты можешь:
- Создайте коллекцию
- Масштабируйте вероятность до целого значения (например, 0-100)
- Для каждого документа вставьте в новую коллекцию X документов, где X-вероятность исходного документа. Единственное поле, необходимое в новой коллекции, — это идентификатор исходного документа, но поскольку _id должен быть уникальным, вам потребуется сохранить значение идентификатора в каком-либо другом поле
- Используйте $sample, чтобы получить взвешенный случайный идентификатор документа из новой коллекции
- Найдите документ по его идентификатору в исходной коллекции (в виде отдельного запроса или с помощью $lookup)
Комментарии:
1. Это звучит как хорошая идея, но это также выглядит как «обман», а не чистое решение, я мог бы сделать это, если бы не нашел лучшего решения. Спасибо за ваш ответ