结合使用MongoDB查询和字符串输入

时间:2018-08-14 19:06:56

标签: javascript mongodb meteor

我正在尝试创建mongoDB查询,但条件设置为字符串,并且输出返回空白数组。这是我要执行的操作的示例:

    let sample_text = "{$and: [some conditions]}"
    let results = My_Collection.find(sample_text).fetch()

这将导致一个空数组。但是,如果我这样手动输入正则表达式查询,则会得到一个包含期望值的数组:

    let results = My_Collection.find({$and: [some conditions]}).fetch()

示例文本正则表达式字符串由外部函数生成,并作为字符串返回。

我的问题是如何在不带引号的情况下插入我的正则表达式字符串?还是有一种更好的方式生成正则表达式而不首先使其成为字符串?

我尝试使用新的RegExp,但是这破坏了我的某些表达式,并且我试图简单地删除引号作为第一个和最后一个字符,但这也不起作用。

编辑:由于查询包含$等特殊字符,因此不能简单地将查询转换为JSON对象。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,那么您就是:从外部源获取文本字符串,该字符串是您查询的字符串表示形式。

将字符串传递到MongoDB中将不起作用,因为MongoDB将对象作为输入。

您将需要将字符串转换为对象。理想情况下,传入的字符串是JSON。但是您提供的字符串不是JSON。 JSON版本示例为:

sample_text = "{"$and":[{"foo":true},{"bar":false}]}"

然后您可以通过运行JSON.parse(sample_text)来生成对象:

let sample_text = "{"$and":[{"foo":true},{"bar":false}]}";
let query = JSON.parse(sample_text);
let results = My_Collection.find(query).fetch();