2016-01-21 5 views
6

मैं अपने mongodb संग्रह खोजने योग्य बनाने की कोशिश कर रहा हूँ। मैं पाठक्या मोंगोड टेक्स्ट इंडेक्स में सभी अनुक्रमित शर्तों को देखने का कोई तरीका है?

द्वारा एक संग्रह का अनुक्रमण
db.products.createIndex({title: 'text'}) 

मैं सोच रहा हूँ अगर यह इस संग्रह के लिए सभी सूचकांक शर्तों की सूची प्राप्त करना संभव है के बाद पाठ खोज करने में सक्षम हूँ। जब लोग अपने खोज प्रश्न लिख रहे हों तो ऑटो पूर्ण होने और वर्तनी जांच/सुधार के लिए यह बहुत उपयोगी होगा।

उत्तर

0

db.products.distinct("title") है, आप के लिए क्या देख रहे हैं?

+0

नहीं वास्तव में। मैं उन शब्दों की तलाश कर रहा हूं जो मोंगोडब ने शीर्षकों का सूचकांक बना दिया है, जो कि सभी उत्पादों के शीर्षक फ़ील्ड के बीच अलग-अलग शब्दों का एक सेट है, प्रत्येक शब्द किसी भी तरह उन उत्पादों की सूची को इंगित करता है जिनके शीर्षक में यह शीर्षक है। वैसे भी उत्तर के लिए धन्यवाद, यह कार्य भी उपयोगी हो सकता है। –

2

कोई MongoDB में इस के लिए समारोह में बनाया गया है। हालांकि, आप आसानी से इस जानकारी को एकत्रीकरण क्वेरी के साथ प्राप्त कर सकते हैं।

db.products.aggregate([ 
    { 
     $project:{ 
     words:{ 
      $split:["$title"," "] 
     } 
     } 
    }, 
    { 
     $unwind:"$words" 
    }, 
    { 
     $group:{ 
     _id:"$words", 
     count:{ 
      $sum:1 
     } 
     } 
    }, 
    { 
     $sort:{ 
     count:-1 
     } 
    } 
]) 

यह आउटपुट प्रत्येक शब्द के लिए घटना की संख्या:

{ "_id" : ObjectId("5874dbb1a1b342232b822827"), "title" : "title" } 
{ "_id" : ObjectId("5874dbb8a1b342232b822828"), "title" : "new title" } 
{ "_id" : ObjectId("5874dbbea1b342232b822829"), "title" : "hello world" } 
{ "_id" : ObjectId("5874dbc6a1b342232b82282a"), "title" : "world title" } 
{ "_id" : ObjectId("5874dbcaa1b342232b82282b"), "title" : "world meta" } 
{ "_id" : ObjectId("5874dbcea1b342232b82282c"), "title" : "world meta title" } 
{ "_id" : ObjectId("5874de7fa1b342232b82282e"), "title" : "something else" } 

इस क्वेरी हमें शब्दों के बारे में जानकारी दे देंगे:

मान लेते हैं कि आपके संग्रह का अनुसरण दस्तावेज शामिल हैं

{ "_id" : "title", "count" : 4 } 
{ "_id" : "world", "count" : 4 } 
{ "_id" : "meta", "count" : 2 } 
{ "_id" : "else", "count" : 1 } 
{ "_id" : "something", "count" : 1 } 
{ "_id" : "new", "count" : 1 } 
{ "_id" : "hello", "count" : 1 } 

आप MongoDB 3.4 का उपयोग कर रहे हैं, तो आप केस संवेदी/विशेषक insen प्राप्त कर सकते हैं नए collation विकल्प वाले शब्दों पर बैठे आंकड़े।

{ "_id" : ObjectId("5874e057a1b342232b82282f"), "title" : "title" } 
{ "_id" : ObjectId("5874e05ea1b342232b822830"), "title" : "new Title" } 
{ "_id" : ObjectId("5874e067a1b342232b822831"), "title" : "hello world" } 
{ "_id" : ObjectId("5874e076a1b342232b822832"), "title" : "World Title" } 
{ "_id" : ObjectId("5874e085a1b342232b822833"), "title" : "World méta" } 
{ "_id" : ObjectId("5874e08ea1b342232b822834"), "title" : "World meta title" } 
{ "_id" : ObjectId("5874e0aea1b342232b822835"), "title" : "something else" } 

एकत्रीकरण क्वेरी के लिए मिलान विकल्प जोड़ने:

db.products.aggregate([ 
    { 
     $project:{ 
     words:{ 
      $split:["$title"," "] 
     } 
     } 
    }, 
    { 
     $unwind:"$words" 
    }, 
    { 
     $group:{ 
     _id:"$words", 
     count:{ 
      $sum:1 
     } 
     } 
    }, 
    { 
     $sort:{ 
     count:-1 
     } 
    } 
], 
{ 
    collation:{ 
     locale:"en_US", 
     strength:1 
    } 
}) 

इस वसीयत उत्पादन:

{ "_id" : "title", "count" : 4 } 
{ "_id" : "world", "count" : 4 } 
{ "_id" : "méta", "count" : 2 } 
{ "_id" : "else", "count" : 1 } 
{ "_id" : "something", "count" : 1 } 
{ "_id" : "new", "count" : 1 } 
{ "_id" : "hello", "count" : 1 } 

उदाहरण के लिए

, मान लेते हैं कि हमारे संग्रह अब निम्नलिखित दस्तावेज शामिल करते हैं

strengh तुलना के स्तर प्रदर्शन करने के लिए है:

collation.strength: 1 // case insensitive + diacritic insensitive 
collation.strength: 2 // case insensitive only 
+0

आपको बहुत धन्यवाद @ फ़ेलिक्स। यह एक अच्छा जवाब है और मुझे बहुत मदद की! – BassT

1

हम autoCompleteTerm लगता है तो आपका इनपुट मान आप इस क्वेरी का उपयोग शीर्षक की सूची प्राप्त कर सकते है:

db.products.distinct('title', { $text: { $search: autoCompleteTerm } }) 
संबंधित मुद्दे

 संबंधित मुद्दे