gpt4 book ai didi

mongodb - Meteor 和 mongoDB LIKE 查询

转载 作者:行者123 更新时间:2023-12-02 03:41:14 24 4
gpt4 key购买 nike

我正在尝试根据用户搜索的内容生成查询。我有一个字符串数组,我只想在 mongoDB 选择器中发送它,我的问题是/text/语法,它在 mongoDB 控制台中完美运行,如下所示:

Items.find({ $or: [{name: /doc/}, {tags: /doc/}, {name: /test/}, {tags: /test/}] });

但是我无法在 JavaScript 中编写相同的语法,我尝试了几个版本。

var mongoDbArr = [];
searchArray.forEach(function(text) {
mongoDbArr.push({name: /text/});
mongoDbArr.push({tags: /text/});
});
return Items.find({ $or: mongoDbArr});

但它只搜索“文本”,而不搜索变量中的内容。像这样:

var mongoDbArr = [];
searchArray.forEach(function(text) {
mongoDbArr.push({name: "/" + text + "/"});
mongoDbArr.push({tags: "/" + text + "/"});
});
return Items.find({ $or: mongoDbArr});

但这并没有给我任何结果。我错过了什么?

最佳答案

您必须使用 JavaScript 构建正则表达式:

var mongoDbArr = [];
searchArray.forEach(function(text) {
mongoDbArr.push({name: new RegExp(text)});
mongoDbArr.push({tags: new RegExp(text,"i")});
});

return Items.find({ $or: mongoDbArr});

或者使用 regular expressions使用 mongodb 查询:

mongoDbArr.push({name: { $regex : text, $options:"i" } });
mongoDbArr.push({tags: { $regex : text, $options:"i" } });

要转义特殊字符,您可以在使用 text 之前执行此操作(来自 JQuery UI 的源代码)

text = text.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");

关于mongodb - Meteor 和 mongoDB LIKE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16020386/

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