Reputation: 113
I have one problem I wanted to implement full text search for mongodb, so i got stuck becouse in database created just one index for text search and i want to have multiple fields for search .. exmaple of schema :
name: {
type: String,
required: true,
trim: true,
index: 'text'
},
sub_name: {
type: String,
trim: true
},
location: [{
geo: {
type: [Number],
index: '2d'
},
description: {
type: String,
trim: true,
index: 'text'
},
address: {
city: {
type: String,
index: 'text'
},
street: {
type: String,
index: 'text'
},
state: {
type: String,
index: 'text'
}
},
so what is the trick to do that ? how can i apply mutliple fields for full text search ? thx for anwser ...
Upvotes: 3
Views: 6054
Reputation: 248
Create Multiple Text Indexes use this. this will help for full text search
FIND THE INDEXES : db.collectionName.getIndexes();
Than Drop index Name: db.campaigns.dropIndex('name_text');
Create Indexes on Multiple Key: db.campaigns.ensureIndex({ name: 'text' , description: 'text', tags : 'text' });
Upvotes: 0
Reputation: 1786
Try something like that:
var schema= new Schema({
name: String,
sub_name: String,
tags: { type: [String], index: true } // field level
});
schema.index({ name: 'text', sub_name: 'text' }); // schema level
Upvotes: 7