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('')) // trueRun Code Online (Sandbox Code Playgroud)
如果您需要一些聚合技巧,那么您可以试试这个
db.collection.aggregate([
{ "$project": {
"name": {
"$reduce": {
"input": { "$split": ["$name", " "] },
"initialValue": "",
"in": { "$concat": ["$$value", "$$this"] }
}
}
}},
{ "$match": { "name": "cellphones" }}
])
Run Code Online (Sandbox Code Playgroud)
你可以在这里测试一下
您可以先在两个字符串上删除空格,然后再进行比较,例如:
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)); // falseRun Code Online (Sandbox Code Playgroud)
只需从查询查找后获得的响应中删除这些空格,然后将响应传递给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)
这可能有助于您伸出援助之手.
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |