Есть коллекция "Printers"
:
{
"_id" : ObjectId("5cc02f9b9931de72296ba6c2"),
"model" : "Xerox WorkCentre 3315",
"serial" : "3255498494",
"date" : ISODate("2019-04-25T08:57:48.001+0000"),
"pages" : NumberInt(4868),
"location" : "New location",
"ip" : "10.159.0.35",
"ip_int" : NumberInt(178192419)
}
и коллекция "Филиалы":
{
"_id" : ObjectId("5cb4799b8c0cfe35e4a4c266"),
"name" : "Office 1",
"ip_start" : NumberLong(178192384),
"ip_end" : NumberLong(178194431)
}
// ----------------------------------------------
{
"_id" : ObjectId("5cb479e68c0cfe35e4a4c269"),
"name" : "Office 2",
"ip_start" : NumberLong(3232258048),
"ip_end" : NumberLong(3232258303)
}
"Branches"
коллекция содержит IP-адреса, преобразованные в целочисленное значение, т.е. 192.168.0.1
равно 3232235521
. Каждая запись в филиалах описывает подсеть.
Каждый принтер расположен в одной ветке.
Если printers.ip_int между записями ветвей [ip_start;ip_end]
, то запрос должен вернуть все поля из Printer
и одно поле "Name"
из "Branches"
collection.
Как я могу это сделать?