Изискването за съхранение на целочислена стойност е по-малко, но разбира се, не е много важно. Алгоритъмът за сортиране/индексиране на число би бил леко по-бързо от низ обикновено, но разликата би била изключително малка, тъй като низът също е много къс.
Не бих очаквал убедителна разлика в производителността между двете. Ако планирате да съхранявате IPV6 адреси, проблемът ще бъде, че BSON (http://bsonspec.org/ #/спецификация ) няма прост тип данни за съхраняване на 16-байтово число, така че не е непременно естествено да се съхранява само като число.
В крайна сметка вероятно просто ще използвам низове, ако искате да избегнете извършването на превод от хранилище към екран или ако искате да направите заявките по-естествени за писане за повечето от нас :) :
db.ips.find({addr: "192.168.1.1"})
Ако използвате низове, бих ви препоръчал също така да помислите за съхраняване като низ с фиксиран формат, като например 192.168.001.001
ако искате да извършвате по-сложни търсения, като например търсене в диапазон. Тъй като низ, съхранен с последователен фиксиран формат, ще се сортира естествено, можете да го използвате по повече начини, отколкото иначе бихте могли. Ако диапазоните не са важни, не е необходимо да се съхранява по този начин.
С фиксиран формат можете да направите заявка като:
db.ips.find({ addr: {
$gte: "192.168.000.000",
$lte: "192.168.000.255" } })
Това ще намери всички IP адреси между (включително) 192.168.0.0
и 192.168.0.255
.
В идеалния случай ще имате индекс в полето и в двата случая:
db.ips.ensureIndex({ addr: 1 })