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

Филтриране по държава и свободно търсене на текст mongodb с помощта на mongoose

Първо, надявам се, че знаете, че трябва да изпълните $text базирани заявки, трябва да имате текстов индекс в това конкретно поле.

Второ, изглежда, че обърквате обратните извиквания и обещанията -

Както виждам вашия query() функцията все още връща обещание, когато извиквате query() функция, която очаквате обратното извикване. Обещанията се връщат веднага при вас и след това трябва да ги разрешите.

Вашият код трябва да изглежда така -

dbHelper.query(mongoose.model('events'), {$text: {$search: "Ade"},'place.location.country': "Australia"})
.then(function(result)){
    // you have your data here
}
.catch(function(err)){
    // an error occured
}

Прочетете повече за обещанията тук .

Друг малък бъг, който мога да забележа, е в query() метод. if statement не използва фигурни скоби и в резултат на това само следващия оператор след if statement ще се изпълни под if клауза. Вторият оператор след if винаги ще се изпълнява -

И така,

if(error)
    console.log(error);
// always executed
reject(error);
resolve(data);

трябва да бъде -

if(error){
    console.log(error);
    reject(error);
}
resolve(data);

Все още не съм сигурен, че всичко това ще може да накара кода ви да работи, тъй като не мога да видя цялата картина тук. IMHO препоръчвам да инвестирате малко повече време в покриване на основите на javascript и MongoDB. Ще ви помогне да спестите много време. И по този въпрос официалните документи на MongoDB са наистина добри.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да съхранявате полето за дата като ISODate() с помощта на jackson в MongoDb

  2. NodeJS + Mongo - как да получите съдържанието на колекцията?

  3. Mongodb:избутва елемент към вложен масив, ако условието е изпълнено

  4. Как да преименувате пътя в отговор на попълване

  5. Докато запазва колекция, MongoDB създава име на индекс, което е твърде дълго и надхвърля ограничението от 127 байта. Как да решим това. мога ли да деактивирам индексирането?