दिलचस्प पोस्ट
मैं jQuery में स्थानीय समय कैसे प्राप्त करूं? पायथन `यदि एक्स कोई नहीं है 'या` नहीं तो x नहीं है'? .append (), प्रीपेड (), .after () और .before () एंड्रॉइड में टेबल लेआउट में कॉलम की समान चौड़ाई निर्धारित करें गतिशील रूप से एक JComboBox में आइटम जोड़ने कंसेटेनेटेड कॉमा-सीडेमेटेड डेटा के एक कॉलम को विभाजित करें और कारकों के रूप में आउटपुट को आउट करें TransactionScope लेनदेन वापस रोल कैसे करता है? ईवेंट को चालू ब्राउज़र पर कैप्चर करें JVM को दूरस्थ डिबग करने की अनुमति देने के लिए जावा कमांड लाइन विकल्प क्या हैं? खोज "संपूर्ण समाधान" के लिए काम करना बंद हो जाता है मैं गिट में अस्थगित परिवर्तनों से "पुराने मोड 100755 नया मोड 100644" कहने वाली फाइल कैसे निकालूं? पूंछ- F के एक अजगर समतुल्य को कैसे लागू किया जाए? मैं विजुअल स्टूडियो में प्रीप्रोसिंग के बाद सी / सी ++ स्रोत फ़ाइल कैसे देखूं? दुनिया के मानचित्र की साजिश रचने में प्रमुख मेरिडियन से अलग केंद्र का उपयोग करें JTable के पहले और बाद में मुद्रण के लिए पाठ जोड़ें

भौगोलिक $ वर्तमान दस्तावेज़ फ़ील्ड मान के पास

इस प्रश्न को लें:

{ 'location' : { '$near' : [x,y], '$maxDistance' : this.field } } 

मैं मौजूदा मूल्यांकन दस्तावेज से विशिष्ट फ़ील्ड के मूल्य को अधिकतम डिस्ट्रिंस देना चाहता हूं। क्या यह संभव है?

Solutions Collecting From Web of "भौगोलिक $ वर्तमान दस्तावेज़ फ़ील्ड मान के पास"

हाँ, यह मुमकिन है। आप इसके बजाय $geoNear उपयोग करें कैच सावधान रहें और ध्यान से पढ़ें।

यह मानते हुए कि आपका इरादा किसी फ़ील्ड को स्टोर करने के लिए है, जैसे कि "travelDistance" , दस्तावेज़ पर यह इंगित करने के लिए कि ऐसी किसी भी खोज को "भीतर" होना चाहिए, जिसकी जांच योग्य बिंदु से दूरी के लिए वैध हो। फिर हम केवल $redact साथ स्थिति को क्वेरी और मूल्यांकन करते हैं:

 db.collection.aggregate([ { "$geoNear": { "near": { "type": "Point", "coordinates": [x,y] }, "spherical": true, "distanceField": "distance" }}, { "$redact": { "$cond": { "if": { "$lte": [ "$distance", "$travelDistance" ] }, "then": "$$KEEP", "else": "$$PRUNE" } }} ]) 

एकमात्र पकड़ यह है कि $geoNear $near तरह ही पहली जगह में "पास" के कुछ निश्चित दस्तावेजों की वापसी होगी आप विकल्पों के साथ, लेकिन सामान्य क्वेरी फ़ॉर्म के विपरीत, यह मूल रूप से गारंटी दे रहे हैं कि अंतिम परिणाम दिए गए निर्दिष्ट निर्दिष्ट "निकटतम" संख्याओं से कम होंगे।

जब तक आप उस बारे में जानते हैं, तब यह पूरी तरह वैध है।

दरअसल, क्वालिफाइंग से निपटने का सामान्य तरीका यह है कि त्रिज्या के भीतर "पास" क्या है

इसके अलावा "दूरी" के बारे में पता करें कि आपके पास निर्देशित संग्रह कैसे हैं विरासत समन्वय जोड़े के रूप में दूरी रेडियन में होगी, जो आपको शायद गणित को किलोमीटर या मील में बदलने की आवश्यकता होगी।

GeoJSON का उपयोग करते समय, दूरी को हमेशा मानक प्रारूप के रूप में माना जाता है।

सभी गणित नोट्स दस्तावेज़ीकरण में हैं

एनबी $geoNear दस्तावेज को सावधानीपूर्वक पढ़ें। "spherical" जैसे विकल्प "2dsphere" इंडेक्स के लिए आवश्यक हैं, जैसे वास्तविक दुनिया निर्देशांक के लिए आपके पास होना चाहिए इसके अलावा "limit" को आगे की तरफ के लिए डिफ़ॉल्ट 100 दस्तावेज़ परिणाम से पहले बढ़ाने के लिए आवेदन करने की आवश्यकता हो सकती है।


जैसा कि स्प्रिंग मोंगो का उल्लेख टिप्पणी के रूप में, यहां मूल रूप से उसी के लिए एक ही काम किया गया है:

 Aggregation aggregation = newAggregation( new AggregationOperation() { @Override public DBObject toDBObject(AggregationOperationContext context) { return new BasicDBObject("$geoNear", new BasicDBObject( "near", new BasicDBObject( "type","Point") .append("coordinates", Arrays.asList(20,30)) ) .append("spherical",true) .append("distanceField","distance") ); } }, new AggregationOperation() { @Override public DBObject toDBObject(AggregationOperationContext context) { return new BasicDBObject("$redact", new BasicDBObject( "$cond", Arrays.asList( new BasicDBObject("$lte", Arrays.asList("$distance", "$travelDistance")), "$$KEEP", "$$PRUNE" ) ) ); } } );