Mongoose.js检查所有字段以匹配字符串

时间:2015-10-28 02:20:17

标签: node.js mongodb mongoose

我正在开发一个proyect,用户可以在其中输入他想要从用户那里找到的任何内容。它可以是名称,卡片ID,用户名等。

mongoose.js中有什么内容可以在所有字段中查找字符串吗?

类似的东西:

var user_input = "le";
Users.find({$contains: user_input}, function(error, usersFound){
    if(!error) console.log('I found users!', usersFound);

    //usersFound contains all the users that has "le" in at least one field 
});

我发现已经有一个与RegEx相匹配的选项,但仅限于在一个字段中搜索。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

  var user_input = new RegExp("le", 'i');
  var queryArray = [];

  for (var property in Users.schema.paths) {
    if (Users.schema.paths.hasOwnProperty(property)  && Users.schema.paths[property]["instance"] === "String") {
      queryArray.push(JSON.parse('{\"' + property + '\": \"' + user_input + "\"}"))
    }
  }

  var query = {
    $or: queryArray
  };

  Users.find(query, function(error, usersFound){
    if(!error) console.log('I found users!', usersFound);

    //usersFound contains all the users that has "le" in at least one field 
  });