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

Как да съхраня изхода на заявката в temp db?

Mongo не поддържа първоначално „временни“ колекции.

Типично нещо, което трябва да направите тук, е всъщност да не записвате целия изведен резултат в друга база данни, тъй като това би било напълно безсмислено, тъй като Elasticsearch извършва собствено кеширане като такова, че не се нуждаете от слой отгоре.

Освен това, поради проблеми с IO, обикновено е лоша идея да се напише, да речем, набор от резултати от 10k записа в Mongo или друга база данни.

Има заявка за функция за това, за което говорите:https://jira.mongodb.org/ преглед/SERVER-3215 но все още няма планиране.

Пример

Може да имате таблица с резултати.

В тази таблица ще имате документ, който изглежда така:

{keywords: ['bok', 'mongodb']}

Всеки път, когато търсите и превъртате през всеки резултатен елемент, вие ще пишете ред в тази таблица, попълвайки полето за ключови думи с ключови думи от този резултат от търсенето. Това ще бъде за резултат от търсене за списък с резултати от търсене за всяко търсене. Вероятно би било най-добре просто да предавате поточно всеки резултат от търсенето към MongoDB, когато идва. Никога не съм програмирал Python (въпреки че искам да науча), така че пример в псевдо:

var elastic_results = [{'elasticresult'}];
foreach(elastic_results as result){
    //split down the phrases in this result and make a keywords array
    db.results_collection.insert(array_formed_from_splitting_down_result); // Lets just lazy insert no need for batch or trying to shrink the amount of data to one go or whatever, lets just stream it in.
}

Така че, докато вървите по вашите резултати, вие просто масово вмъквате възможно най-бързо, създавайки нещо като "поток" от входни данни към MongoDB. Може да направи това доста добре.

След това това трябва да ви даде списък с думи и езикови глаголи, които можете да разделяте, за да обработвате неща като MR и други неща, за да събирате статистически данни за тях.

Без да знам повече и повече за вашия сценарий, това е най-добрият ми отговор.

Това не използва концепцията за временна таблица, а вместо това прави вашите данни постоянни, което звучи добре, тъй като искате да използвате Mongo като машина за съхранение за по-нататъшни задачи.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Достъп до подколекция в mongoid with rails формуляр за редактиране и създаване на нов запис

  2. Нуждаете се от решение за търсене на низ към objectID externalField

  3. Как да сумирате всички полета в поддокумент на MongoDB?

  4. Mongo $near ще върне ли документи, за които всяка точка в MultiPoint е в обхвата?

  5. Инсталиране и използване на MongoDB в Grails 3.x