डेटाबेस के शीर्ष पर ड्राइवर के शीर्ष पर ढांचे के शीर्ष पर एक एप्लिकेशन लिखना फोन पर एक गेम जैसा है:आप कहते हैं "इन्सर्ट फू", और डेटाबेस "बैंगनी बंदरों के साथ डिशवॉशर" कहता है।मजबूत>
Mongosniff आपको यह देखने की अनुमति देता है कि डेटाबेस क्या सुनता और कहता है।
यह बाइनरी डिस्ट्रीब्यूशन के साथ आता है, इसलिए यदि आपके पास मोंगोड है, तो आपके पास मोंगोस्निफ होना चाहिए।
इसे आज़माने के लिए, पहले हमेशा की तरह mongod इंस्टेंस चलाएँ:
<ब्लॉकक्वॉट>
$ ./mongod
जब आप mongosniff चलाते हैं तो आपको इसे लूपबैक इंटरफ़ेस (लोकलहोस्ट) सुनने के लिए कहना होगा। इस इंटरफ़ेस को आमतौर पर "लो" कहा जाता है, लेकिन मेरा मैक इसे "lo0" कहता है, इसलिए ifconfig चलाएँ यह सुनिश्चित करने के लिए कि आप इसे सही नाम देते हैं। अब इसे चलाएँ:
<ब्लॉकक्वॉट>
$ sudo ./mongosniff --source NET lo
sniffing... 27017
नोट "सुडो":इसने मेरे उपयोगकर्ता खाते से मेरे लिए कभी काम नहीं किया, शायद कुछ बेवकूफ नेटवर्क अनुमतियों के कारण।
अब Mongo शेल चलाएँ और कुछ डालने का प्रयास करें:
<ब्लॉकक्वॉट>
db.foo.insert({x:1})
यदि आप mongosniff आउटपुट को देखें, तो आप देखेंगे:
<ब्लॉकक्वॉट>
127.0.0.1:57856 -->> 127.0.0.1:27017 test.foo 62 bytes id:430131ca 1124151754
insert: { _id: ObjectId('4c7fb007b5d697849addc650'), x: 1.0 }
127.0.0.1:57856 -->> 127.0.0.1:27017 test.$cmd 76 bytes id:430131cb 1124151755
query: { getlasterror: 1.0, w: 1.0 } ntoreturn: -1 ntoskip: 0
127.0.0.1:27017 <<-- 127.0.0.1:57856 76 bytes id:474447bf 1195657151 - 1124151755
reply n:1 cursorId: 0
{ err: null, n: 0, wtime: 0, ok: 1.0 }
तीन अनुरोध हैं, सभी एक दयनीय डालने के लिए। पहले अनुरोध को काटकर, हम यह पता लगा सकते हैं:
स्रोत –>>
गंतव्य स्थान
हमारे क्लाइंट,
इस मामले में, mongo , पोर्ट 57856 के माध्यम से काम करता है और डेटाबेस को एक संदेश भेजता है (127.0.0.1:27017)।
डीबी
संग्रह
यह क्वेरी "परीक्षण" डेटाबेस के "फू" संग्रह के लिए है।
बाइट लंबाई
अनुरोध की लंबाई 62 बाइट्स है। यह सुविधाजनक हो सकता है यदि आपके अनुरोध अधिकतम अनुरोध लंबाई (16 एमबी) के करीब हैं।
आईडी:
हेक्साडेसिमल
पहचानकर्ता
यह हेक्साडेसिमल और दशमलव रूप में अनुरोध आईडी है (यदि आपके पास कंप्यूटर नहीं है, तो जाहिर है)। डेटाबेस के लिए प्रत्येक क्वेरी में कर उद्देश्यों के लिए इसके साथ एक विशिष्ट पहचानकर्ता जुड़ा होता है।
ऑप :
सामग्री .
यह अनुरोध की वास्तविक सामग्री है:हम इस दस्तावेज़ को सम्मिलित करते हैं। ध्यान दें कि यह 1.0 का फ्लोटिंग पॉइंट मान सम्मिलित करता है, हालांकि हमने शेल में 1 दर्ज किया है। ऐसा इसलिए है क्योंकि जावास्क्रिप्ट में केवल एक संख्या प्रकार है, इसलिए शेल में दर्ज प्रत्येक संख्या को एक डबल में बदल दिया जाता है।
mongosniff . के आउटपुट में अगला अनुरोध डेटाबेस कमांड है:यह जांचता है कि सम्मिलन सफल है (खोल हमेशा सुरक्षित सम्मिलन करता है)।
सुना गया अंतिम संदेश थोड़ा अलग है:यह डेटाबेस से शेल में जाता है। यह getlasterror कमांड का डेटाबेस रिस्पांस है। यह दर्शाता है कि केवल एक दस्तावेज़ लौटाया गया था (उत्तर n:1) और डेटाबेस में कोई और परिणाम प्रतीक्षा नहीं कर रहे हैं (कर्सरआईड:0)। यदि यह एक "वास्तविक" क्वेरी थी और डेटाबेस से भेजने के लिए परिणामों का एक और पैकेज था, तो कर्सर आईडी गैर-शून्य होगा।