MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

दूरी और समय के अनुसार जियोनियर सॉर्ट

यहां उपयोग करने के लिए सही क्वेरी एकत्रीकरण ढांचे का उपयोग करती है जिसमें $geoNear है इसमें सहायता के लिए पाइपलाइन चरण। यह एकमात्र ऐसा स्थान है जहां आप कई कुंजियों द्वारा "क्रमबद्ध" कर सकते हैं, दुर्भाग्य से "भू-स्थानिक" $nearSphere $text . जैसे "दूरी" के लिए "मेटा" प्रक्षेपण नहीं है एक "स्कोर" है।

साथ ही geoNear आप जिस डेटाबेस कमांड का उपयोग कर रहे हैं उसका उपयोग "कर्सर" .sort() . के साथ भी नहीं किया जा सकता है उस तरह से भी।

db.paging.aggregate([
    { "$geoNear": {
        "near": [106.606033,29.575897 ],
        "spherical": true,
        "distanceField": "distance",
        "distanceMuliplier": 6371,
        "maxDistance": 1/6371
    }},
    { "$sort": { "distance": 1, "createdate": -1 } },
    { "$skip": ( 2-1 ) * 2 },
    { "$limit": 5 }
])

यह आप जो करने की कोशिश कर रहे हैं उसके बराबर है।

एकत्रीकरण ढांचे के साथ आप "पाइपलाइन ऑपरेटर" का उपयोग करते हैं $sort . जैसी चीज़ें करने के लिए "कर्सर संशोधक" के बजाय , $skip और $limit . साथ ही इन्हें जरूरी एक तार्किक क्रम में हो, जबकि कर्सर संशोधक आमतौर पर इसे काम करते हैं।

यह "यूनिक्स पाइप" की तरह एक "पाइपलाइन" है। |

साथ ही, "maxDistance" और "distanceMuliplier" से सावधान रहें। चूंकि आपके को-ऑर्डिनेट्स "लीगेसी को-ऑर्डिनेट पेयर" में हैं, न कि GeoJSON में प्रारूप, फिर दूरियों को "रेडियन" में मापा जाता है। यदि आपके पास GeoJSON संग्रहीत स्थान डेटा है तो परिणाम "मीटर" में वापस आ जाता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. idObject का उपयोग करके तिथि के अनुसार फ़िल्टर करें

  2. जावा में मोंगो डीबी अनुरोध स्प्रिंग-डेटा मोंगो

  3. MongoDb SafeMode की तुलना WriteConcern से करें

  4. जटिल प्रकार के क्षेत्र का नाम बदलें जो सरणी में स्थित है

  5. मोंगोडब में फ़ील्ड कैसे बढ़ाएं?