Лучший способ сохранить и выполнить сортировку IP в Монго БД? - PullRequest
1 голос
/ 21 октября 2019

Я ищу несколько вопросов и ответов, чтобы понять, как лучше сохранить и выполнить сортировку IP-адреса в базе данных mongo, но я не могу найти решение. Прежде всего: как я могу сохранить IP? Строка? Int? Другие? Во-вторых: После сохранения (предположим, например, что мои Ips переходят на 10.1.0.20 на 10.1.1.255 ), я должен получить «самый высокий» IP в моей БД и увеличить новыйодин на 1. Как я могу это сделать? Я имею в виду, что это лучший способ получить его? Правильно ли совершать

this.model.findOne().sort({"staticIp": -1}).exec();

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

(информация только по IPv4, см. Ссылку для обсуждения IPv6). Таким образом, IP-адрес в большинстве случаев бесполезен без маски 1-32. Это дает вам информацию о том, к какой подсети принадлежит рассматриваемый хост, и позволяет группировать по подсетям (в зависимости от вашего варианта использования ofc)

, теперь вы можете хранить их как 32-битные неподписанные целые числа

  • int 134744072 = 8.8.8.8

или как

  • десятичный 8.8.8.8

или двоичная строка

  • 00001000 00001000 00001000 00001000

Но в большинстве систем IP-адрес без маски похож на номер дома без адреса улицы. Таким образом, имея маску, вы можете сделать небольшую сетевую математику и получить все хосты в одном сегменте сети, и посмотреть, сколько свободных адресов вы оставили.

imo, используйте целое число без знака, изатем второе целое число для хранения маски. А затем, возможно, используйте отсортированные вставки / удаления.

Я бы указал вам на этот хороший ответ здесь на похожую тему

удачи!

0 голосов
/ 21 октября 2019

У меня, конечно, нет полного решения, но будет ли сохранение ip в виде массива? Поскольку ip было бы довольно легко разместить в массиве:

var ip = [127,0,0,1];

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

Если кто-то с большим знанием mongodb может помочь с этим, это будет оценено!

...