如何匹配包含空格和不包含空格的两个字符串

All*_*yam 15 mongodb node.js mongodb-query aggregation-framework

例如:在DB中,我的字符串值就像"cell phones".如果我"cellphones"从前端得到字符串值.如何将其与DB字符串进行比较并获取相关的字符串值作为响应.

小智 10

你可以这样比较:

let val1 = 'cell phones';
let val2 = 'cellphones';

console.log(val1.replace(/\s/g, '') === val2.replace(/\s/g, '')) // true
//OR
console.log(val1.split(' ').join('') === val2.split(' ').join('')) // true
Run Code Online (Sandbox Code Playgroud)


Ash*_*shh 6

如果您需要一些聚合技巧,那么您可以试试这个

db.collection.aggregate([
  { "$project": {
    "name": {
      "$reduce": {
        "input": { "$split": ["$name", " "] },
        "initialValue": "",
        "in": { "$concat": ["$$value", "$$this"] }
      }
    }
  }},
  { "$match": { "name": "cellphones" }}
])
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下


Pro*_*daa 5

您可以先在两个字符串上删除空格,然后再进行比较,例如:

let a = "cell phone";
let b = "cellphone";
let c = "cell phones"

const stripSpaces = s => s.replace(/\s/g, '');

// compare
console.log(stripSpaces(a) == stripSpaces(b)); // true
console.log(stripSpaces(a) == stripSpaces(c)); // false
Run Code Online (Sandbox Code Playgroud)


Tri*_*ura 4

只需从查询查找后获得的响应中删除这些空格,然后将响应传递给require输入字段.然后将该字符串与前端或输入字符串匹配.如果两个匹配都加载所需内容.假设集合名称是Category.然后示例查询将是这样的

Category.find().exec((err, categories) => {
         var details=[]
         var matchCategory=[]
         categories.map((category,key)=>{
           var obj ={}
           obj.name = category.name.toLowerCase().replace(/\s/g, "")
           details.push(obj);
         })
       if(details.length > 0){
         var detailsLength=details.length
         details.map((category,key)=>{
             if(category.name=="cellphones"){ // match your input string 
               matchCategory.push(category)
             }
             detailsLength--
         })
         if(detailsLength==0){
               resolve(matchCategory);
         }
       }
     })
Run Code Online (Sandbox Code Playgroud)

这可能有助于您伸出援助之手.