नोट:प्रश्न बदल गया है - नीचे अपडेट देखें।
मूल उत्तर:
हाँ।
इसके बजाय:
db.tableName.find({ col: 'value' })
आप इसे इस प्रकार उपयोग करते हैं:
db.collection('tableName').find({ col: 'value' }, (err, data) => {
if (err) {
// handle error
} else {
// you have data here
}
});
देखें:http://mongodb.github.io /node-mongodb-native/2.2/api/Collection.html#find
अपडेट करें
जब आपने अपना प्रश्न बदल दिया और कुछ टिप्पणियां पोस्ट कर दीं तो यह अधिक स्पष्ट हो गया कि आप क्या करना चाहते हैं।
नोड में मोंगो शेल का अनुकरण करने के अपने लक्ष्य को प्राप्त करने के लिए आपको उपयोगकर्ता द्वारा टाइप की गई कमांड को पार्स करना होगा और ध्यान में रखते हुए उपयुक्त कमांड को निष्पादित करना होगा:
- मोंगो शेल द्वारा उपयोग किए जाने वाले स्पाइडरमोन्की और वी8 और लिबव के साथ नोड के बीच का अंतर
- बीएसओएन और जेएसओएन के बीच अंतर
- तथ्य यह है कि मोंगो शेल समकालिक रूप से काम करता है और नोड ड्राइवर अतुल्यकालिक रूप से काम करता है
आखिरी हिस्सा शायद आपके लिए सबसे कठिन हिस्सा होगा। याद रखें कि मोंगो शेल में यह पूरी तरह से कानूनी है:
db.test.find()[0].x;
नोड में .find()
विधि मान वापस नहीं करती है, लेकिन यह या तो कॉलबैक लेती है या एक वादा लौटाती है। यह पेचीदा होगा। db.test.find()[0].x;
वादों के साथ मामले को संभालना अपेक्षाकृत आसान हो सकता है (यदि आप वादों को अच्छी तरह समझते हैं) लेकिन यह कठिन होगा:
db.test.find({x: db.test.find()[0].x});
और याद रखें कि आपको मनमाने ढंग से नेस्टेड स्तरों को संभालने की आवश्यकता है।
मोंगो प्रोटोकॉल
कुछ टिप्पणियों को पढ़ने के बाद मुझे लगता है कि यह ध्यान देने योग्य है कि आप वास्तव में मोंगो सर्वर को जो भेजते हैं उसका उस जावास्क्रिप्ट से कोई लेना-देना नहीं है जिसे आप मोंगो शेल में लिखते हैं। मोंगो शेल कई पूर्वनिर्धारित कार्यों और वस्तुओं के साथ स्पाइडरमोन्की का उपयोग करता है।
लेकिन आप वास्तव में मोंगो सर्वर पर जावास्क्रिप्ट नहीं भेजते हैं, इसलिए आप db.collection.find()
जैसी चीजें नहीं भेज सकते हैं। . बल्कि आप एक बाइनरी OP_QUERY
send भेजें एक संग्रह नाम के साथ संरचना को एक सीस्ट्रिंग के रूप में एन्कोड किया गया है और बीएसओएन के रूप में एन्कोड की गई एक क्वेरी और बाइनरी झंडे का एक गुच्छा। देखें:
बीएसओएन स्वयं एक बाइनरी प्रारूप है जिसमें बाइट्स के रूप में परिभाषित कई निम्न स्तर के मान हैं:
लब्बोलुआब यह है कि आप मोंगो सर्वर को कुछ भी नहीं भेजते हैं जो आप मोंगो शेल में दर्ज करते हैं। मोंगो शेल स्पाइडरमोन्की पार्सर का उपयोग करके आपके द्वारा टाइप की जाने वाली चीजों को पार्स करता है और वास्तविक मोंगो सर्वर को बाइनरी अनुरोध भेजता है। Mongo शेल JavaScript का उपयोग करता है लेकिन आप JavaScript में Mongo सर्वर से संचार नहीं करते हैं।
उदाहरण
यहां तक कि JSON क्वेरी ऑब्जेक्ट को JSON के रूप में Mongo को नहीं भेजा जाता है। उदाहरण के लिए, जब आप hello
. के साथ कोई दस्तावेज़ खोज रहे हों आप "दुनिया" के बराबर संपत्ति का उपयोग करेंगे {hello: 'world'}
जावास्क्रिप्ट में या {"hello": "world"}
. में JSON में लेकिन यह वही है जो Mongo सर्वर को भेजा जाता है - Mongo शेल या किसी अन्य Mongo क्लाइंट द्वारा:
\x16\x00\x00\x00\x02hello\x00\x06\x00\x00\x00world\x00\x00
यह इतना अलग क्यों है
यह समझने के लिए कि नोड में प्रयुक्त सिंटैक्स मोंगो शेल से इतना अलग क्यों है, यह उत्तर देखें: