代码之家  ›  专栏  ›  技术社区  ›  AngularBoy

如何使用Mongoose查询两个字段中的关键字

  •  1
  • AngularBoy  · 技术社区  · 7 年前

    假设我有这样一个猫鼬模型:

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

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

    查找vehicleDescription包含单词TEST或AddDescription包含单词TEST的所有位置。

    它还需要区分大小写。

    目前我可以查询如下一个字段:

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

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

    谢谢

    2 回复  |  直到 7 年前
        1
  •  2
  •   Akash Srivastav    7 年前

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

    在本例中,节点中的示例代码。js看起来像这样

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

    有关更多详细信息,请参阅 documentation page 对于MongoDB。

        2
  •  1
  •   Chong Lip Phang    5 年前

    您应该能够使用 $or 操作员,so adModel.find({$or:[{"vehicleDescription": /keyword/gi },{"adDescription": /keyword/gi}]})

    我希望这有帮助:)