nodejs 模糊查询mongodb 查询某个字符段包含某个值

mongodb 查询某个字符段包含某个值,查询条件的地方使用正则表达式即可,下面例子查找word字段中素有带有g的条目

db.pronunciation.find({"word":/.*g.*/})

 如果字段是一个数组,像这样

 

 就可以直接使用这个命令,这个默认就是包含查询。

db.pronunciation.find({'word':'ee'})

 需要查询某个字段的值中间包含某个字符的,可以使用mongosh 的命令如下

db.product1.find({productName:/左前/}) //这个命令在mongosh中可用,因为输入的//被解释正则表达式的识别符号。

而在nodejs中"/左前/" 中的“左前“必须被替换成变量。这时候nodejs就无法识别这是正则表达事了。

为了解决这个问题,可以使用    new RegExp(pName)  来把一个变量变成正则表达式。如下面

let client = new MongoClient("mongodb://127.0.0.1:27017");  //实例化一个客户端 
let db = await client.db("junxin");  //获取数据库
let findProduct = await db.collection("product1");  //获取集合,表
let pName = "左前" let pNameReg = new RegExp(pName) //这一步是最关键的,它把变量变成了正则表达式形式。所以可以达到mongodb 命令行一般的查询效果 findProduct.find({productName:pNameReg}).toArray(function (err, data) { return (data) }); //根据过滤条件查找单条数据; //根据过滤条件查找单条数据 client.close(); //关闭数据库
{"productName":"左前蒙皮进气格栅","productNumber":"23544391","productType":"","productUnit":"件","productStore":"3","productPrice":"2"}
{"productName":"张紧轮",,"productNumber":"23544388","productType":"","productUnit":"件","productStore":"3","productPrice":"2"}
{"productName":"左前蒙皮主体 新宏光S","productNumber":"23544387","productType":"","productUnit":"件","productStore":"3","productPrice":"2"}
{"productName":"空气滤芯","productNumber":"23543342","productType":"","productUnit":"件","productStore":"3","productPrice":"2"}

  

 
posted @ 2022-07-02 08:59  晨曦与晚霞之间  阅读(2587)  评论(0编辑  收藏  举报