如何使用Mongoose在2个字段中查询关键字

时间:2018-04-15 13:22:23

标签: javascript mongodb mongoose mongoose-schema

假设我有一个像这样的Mongoose模型:

var AdSchema = new mongoose.Schema({
    vehicleDescription: String,
    adDescription: String,
    ...
});

我想在两个字段中搜索相同的关键字,例如

查找所有WHERE vehicleDescription包含单词TEST,或者adDescription包含单词TEST。

它也需要区分大小写。

目前我可以像这样查询一个字段:

var query = {};
query['adDescription'] = ({ $regex: search.keyWord, $options: 'i' });

但我需要同时搜索这两个字段。

感谢。

2 个答案:

答案 0 :(得分:1)

您应该可以使用$or运算符,adModel.find({$or[{"vehicleDescription": /keyword/gi },{"adDescription": /keyword/gi}]})

我希望这会有所帮助:)

答案 1 :(得分:0)

通过在{field 1: value 1}, {field 2: value 2},...,{field n: value n}函数中以find()格式指定字段和值,您可以同时搜索多个字段。此外,您还可以指定结果必须满足的各种条件,例如AND,OR等。

在您的情况下,Node.js中的示例代码将如下所示

var result = db.collection('AdSchema').find({
    $or: [ {vehicleDescription : { $regex: search.keyWord, $options: 'i' }}, { adDescription: { $regex: search.keyWord, $options: 'i' } } ]
});

有关更多详细信息,请参阅MongoDB的documentation page