एक पूर्णांक मान भंडारण आवश्यकता छोटी है, लेकिन निश्चित रूप से, बहुत महत्वपूर्ण नहीं है। किसी संख्या के लिए सॉर्टिंग/इंडेक्सिंग एल्गोरिथम थोड़ा होगा सामान्य रूप से एक स्ट्रिंग की तुलना में तेज़, लेकिन अंतर बहुत छोटा होगा क्योंकि स्ट्रिंग भी बहुत छोटी है।
मैं दोनों के बीच एक आकर्षक प्रदर्शन अंतर की उम्मीद नहीं करता। यदि आप 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" } })
यह (समावेशी) 192.168.0.0
. के बीच सभी आईपी पते ढूंढेगा और 192.168.0.255
।
आदर्श रूप से, आपके पास किसी भी तरह से फ़ील्ड पर एक अनुक्रमणिका होगी:
db.ips.ensureIndex({ addr: 1 })