gpt4 book ai didi

node.js - 如何在 MongoDB 查询中使用正则表达式变量

转载 作者:IT老高 更新时间:2023-10-28 23:22:20 25 4
gpt4 key购买 nike

我想根据我构建的正则表达式对文档进行查询 MongoDB。例如我构建了一个简单的正则表达式,如下所示,它是 Nodejs 中随机字母和随机数的组合

var randnum = Math.floor((Math.random() * 10) + 1);
var alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','X','Y','Z'];
var randletter = alpha[Math.floor(Math.random() * alpha.length)];
var val = randletter + randnum + '.*;

我已经为正则表达式变量尝试了各种组合,例如

var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()

似乎没有任何效果。但是,当我编写实际的正则表达式时,我会得到例如的记录

var stream = collection.find({"FirstName": /J.*/).stream();

任何帮助将不胜感激。

谢谢象头神

最佳答案

我的标题也有同样的问题,经过大量搜索,我找到了这个答案 Here ,

var search = 'Joe';
db.users.find(name: /^search/)
db.users.find(name: {$regex: /^search/});
db.users.find(name: {$regex: "/^" + search + "/"});

上面的查询不会返回任何内容。这个小问题的解决方法很简单:

db.users.find(name: new RegExp(search)) //For substring search, case sensitive. 
db.users.find(name: new RegExp('^' + search + '$')) //For exact search, case sensitive
db.users.find(name: new RegExp(search, ‘i')) //For substring search, case insensitive
db.users.find(name: new RegExp('^' +search + '$', 'i')); //For exact search, case insensitive

其他标志或属性可以引用这里添加

关于node.js - 如何在 MongoDB 查询中使用正则表达式变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26699885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com