2016-09-01 2 views
0

У меня есть экземпляр MongoDB, который содержит перевод текстов:MongoDB найти документы

{ 
     "_id" : ObjectId("57c68ba415f4d42b6ecd9ee7"), 
     "en" : "Adana (pronounced [aˈda.na]) is a major city in southern Turkey. The city is situated on the Seyhan river, 35 km (22 mi) inland from the Mediterranean Sea, in south-central Anatolia. It is the administrative seat of the Adana Province and has a population of 1.7 million,[1] making it the fifth most populous city in Turkey. Adana-Mersin polycentric metropolitan area, with a population of 3 million, stretches over 70 km (43 mi) east-west and 25 km (16 mi) north-south; encompassing the cities of Mersin, Tarsus and Adana.", 
     "sw" : "Adana (Kigiriki Άδανα) ni mji mkubwa katika nchi ya Uturuki. Kwa mujibu wa sensa iliyofanyika mwaka wa 2000, mji una wakazi wapatao 1,130,710 waishio huko,[2] na kuufanya kuwa mmoja kati ya miji mitano mikubwa ya Uturuku (baada ya Istanbul, Ankara, İzmir na Bursa). Mwaka wa 2006 mji wa Adana umekadiriwa kufikia iadadi ya wakazi wapatao 1,271,894. Huu ndiyo mji mkuu wa Mkoa wa Adana." 
} 
{ 
     "_id" : ObjectId("57c68ba915f4d42b6ecd9eea"), 
     "en" : "Addis Ababa or Addis Abeba (the spelling used by the official Ethiopian Mapping Authority),(Amharic: አዲስ አበባ? Addis Abäba IPA: [adˈdis ˈabəba] (listen), \"new flower\"; Oromo: Finfinne,[3][4] [fɪnˈfɪ́n.nɛ́] \"Natural Spring(s)\"), is the capital and largest city of Ethiopia. Finfinne is its Oromo name. It has a population of 3,384,569 according to the 2007 population census, with annual growth rate of 3.8%. This number has been increased from the originally published 2,738,248 figure and appears to be still largely underestimated.[2][5]", 
     "sw" : "Addis Ababa (pia Addis Abeba; kwa Kiamhara አዲስ አበባ, \"Ua Jipya\"; kwa Kioromo Finfinne) ni mji mkuu wa Ethiopia na wa Umoja wa Afrika." 
} 
{ 
     "_id" : ObjectId("57c68bab15f4d42b6ecd9eec"), 
     "en" : "Adelaide of Italy (931 – 16 December 999), also called Adelaide of Burgundy, was the second wife of Holy Roman Emperor Otto the Great[2] and was crowned as the Holy Roman Empress with him by Pope John XII in Rome on February 2, 962. Empress Adelaide was perhaps the most prominent European woman of the 10th century; she was regent of the Holy Roman Empire as the guardian of her grandson in 991-995.[2]", 
     "sw" : "Adelaide wa Italia (takriban 931 – 16 Desemba, 999) alikuwa binti wa Rudolf II, mfalme wa Burgundia. Kwanza aliolewa na Lothar, mfalme wa Italia. Alipofariki Lothar, Adelaide aliolewa na Otto I, mfalme wa Ujerumani. Aliishi maisha matakatifu. Sikukuu yake ni 16 Desemba." 
} 

То, что я хотел бы сделать, это выбрать одну конкретную запись. Например, я ожидаю выбрать последнюю запись, сделав это:

db.wiki.find({"sw": "Adelaide wa Italia"}).pretty(); 

Но оболочка манго ничего не возвращает.

В самом деле, я знаю, что я могу создать индекс и сделать что-то вроде:

db.wiki.find({$text: {$search: "\"Adelaide wa Italia\""}}).pretty(); 

, который действительно возвращает запись, как и ожидалось.

Что я делаю неправильно в поиске без индекса, пожалуйста?

+0

Ваш запрос верен, и если у вас есть текстовый индекс, вы должны его найти. Я просто попытался убедиться и нашел последний документ. –

+0

@CetinBasoz Да, текстовый индекс в порядке, но мне было интересно, как сделать то же самое без индекса на месте – Benda

+0

О, я не заметил, что вы делали неиндексную версию. ИМХО, вы не должны делать этого без индекса. Если вы все равно, возможно, вам также захочется добавить некоторые параметры регулярного выражения, например, игнорировать регистр. –

ответ

0

В этом случае вы должны использовать поиск с regex:

db.wiki.find({"sw": /Adelaide wa Italia/}).pretty(); 

, как вы делаете это с помощью:

db.wiki.find({"sw": "Adelaide wa Italia"}).pretty(); 

вы просто скажите Монго, чтобы вернуть вам все документы, где sw равно Adelaide wa Italia, но вы хотите получить все документы, содержащие эту фразу, в поле sw.

+0

Он использует текстовый индекс и текстовый поиск. –

+0

Я понимаю, что вы имели в виду. Теперь я понимаю, что начальный запрос искал, где целая строка «Adelaide wa Italia» – Benda