MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Да спре ли mongodb да игнорира специални символи?

Описанието на Томалак за това как работи индексирането на текст е правилно, но всъщност можете да използвате текстов индекс за точно съвпадение по фраза на фраза със специален знак:

> db.test.drop()
> db.test.insert({ "_id" : 0, "t" : "hey look at all this #text" })
> db.test.insert({ "_id" : 1, "t" : "text is the best" })
> db.test.ensureIndex({ "t" : "text" })

> db.test.count({ "$text" : { "$search" : "text" } })
2
> db.test.count({ "$text" : { "$search" : "#text" } })
2

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })
{ "_id" : 0, "t" : "hey look at all this #text" }

Точните съвпадения по фраза се обозначават чрез заобикаляне на фразата в двойни кавички, които трябва да бъдат екранирани в обвивката като "\"#text\"" .

Текстовите индекси са по-големи от нормалните индекси, но ако правите много точни съвпадения по фраза без значение на главни и малки букви, тогава те могат да бъдат по-добър вариант от стандартния индекс, защото ще работят по-добре. Например в поле t с индекс { "t" : 1 } , регулярен израз с точно съвпадение

> db.test.find({ "t" : /#text/ })

извършва пълно сканиране на индекса. Аналогичната (но не еквивалентна) текстова заявка

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })

ще използва текстовия индекс, за да намери документи, съдържащи термина "text" , след което сканирайте всички тези документи, за да видите дали съдържат пълната фраза "#text ".

Бъдете внимателни, защото текстовите индекси не са чувствителни към главни букви. Продължаване на примера по-горе:

> db.test.insert({ "_id" : 2, "t" : "Never seen so much #TEXT" })

> db.test.find({ "t" : /#text/ })
{ "_id" : 0, "t" : "hey look at all this #text" }

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })
{ "_id" : 0, "t" : "hey look at all this #text" }
{ "_id" : 2, "t" : "Never seen so much #TEXT" }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да конвертирате низ в objectId в LocalField за $lookup Mongodb

  2. Вмъкнете стойност на конкретна позиция в масив в MongoDB

  3. Mongo:как да сортирате по външно тегло

  4. Търсене на низ със специални символи в документ на MongoDB

  5. Върнете само конкретни полета за заявка в Spring Data MongoDB