比方说,我有以下模型:
var advertise = mongoose.Schema({
username: String,
text: String,
locations: Array,
days: Array,
phone: Object,
images: Array,
age: Number,
height: String,
sex: String,
categories: Array,
targetAudience: Array,
prices: Array,
creator: String,
hairColor: Object,
eyeColor: Object,
breastSize: Object,
bodyType: Object,
advertiseType: Object,
created: {type: Date, default: Date.now},
is_active: {type: Number, default: 0},
order_id: String
});
现在我有一个名为searchString
的值。有没有办法可以使用searchString
搜索所有字段?
现在我只知道使用$or
键执行此操作。但是,这是不切实际的。
如下所示:
mongoose.models.advertise.find({$or: [{'username': {'$regex': searchString}}]}, function (err, advertise) {
res.json(advertise)
})
注意我使用Node.js
答案 0 :(得分:0)
如果您有能力创建$text index:
var advertise = mongoose.Schema({
username: String,
text: String,
locations: Array,
days: Array,
phone: Object,
images: Array,
age: Number,
height: String,
sex: String,
categories: Array,
targetAudience: Array,
prices: Array,
creator: String,
hairColor: Object,
eyeColor: Object,
breastSize: Object,
bodyType: Object,
advertiseType: Object,
created: {type: Date, default: Date.now},
is_active: {type: Number, default: 0},
order_id: String
});
advertise.index({ username: 'text', text: 'text', height: 'text', sex: 'text', creator: 'text', order_id: 'text' });
执行搜索:
mongoose.models.advertise.find({ $text : { $search : searchString } }, function (err, advertise) {
res.json(advertise)
})
我没有真正尝试过,不要犹豫,纠正潜在的错误。