MongoDB и Node.js запросите случайное значение с вероятностью веса

#javascript #node.js #database #mongodb

Вопрос:

Я создаю игру, и с предметами, хранящимися в моей базе данных, я думал о том, чтобы хранить их с таким весом, чтобы вероятность получить предмет составляла xx%.

Есть ли способ сделать это с помощью MongoDB или любой другой альтернативы, учитывая, что база данных еще не заполнена, я ничего не смог найти в Google

Я использую Node.js для части кода, и я МОГУ делать что-то в части кода, например, генерировать случайное число или что-то в этом роде, если это необходимо

Я думал о том, чтобы просто сгенерировать случайное число от 0 до 1. Проверьте вес ниже или равный и выберите документ случайным образом, чтобы чем выше вес, тем меньше вероятность того, что он будет разграблен, будет ли это уместно?

Ответ №1:

Ты можешь:

  1. Создайте коллекцию
  2. Масштабируйте вероятность до целого значения (например, 0-100)
  3. Для каждого документа вставьте в новую коллекцию X документов, где X-вероятность исходного документа. Единственное поле, необходимое в новой коллекции, — это идентификатор исходного документа, но поскольку _id должен быть уникальным, вам потребуется сохранить значение идентификатора в каком-либо другом поле
  4. Используйте $sample, чтобы получить взвешенный случайный идентификатор документа из новой коллекции
  5. Найдите документ по его идентификатору в исходной коллекции (в виде отдельного запроса или с помощью $lookup)

Комментарии:

1. Это звучит как хорошая идея, но это также выглядит как «обман», а не чистое решение, я мог бы сделать это, если бы не нашел лучшего решения. Спасибо за ваш ответ