Mongodb查询不适用于字符串

时间:2016-11-17 13:42:54

标签: node.js mongodb

我正在尝试在数据库中获取与字符串匹配的文档,但是当我传入变量时它不起作用。

我有一个字符串serviceString和serviceString =" test1"," test2"," test3"

        query = db.collection('Services').find({
            'Service': {
                $in: [serviceString]
            }
        });

如果我执行此操作,则不会从DB中返回任何内容:

        query = db.collection('Services').find({
            'Service': {
                $in: ["test1", "test2", "test3"]
            }
        });

它起作用并返回我需要的东西。

你知道为什么它不起作用,我认为字符串将逗号放入字符串中。有什么方法我可以这样做,因为字符串是来自用户的输入所以它可以改变所以我不能在查询中硬编码变量?

2 个答案:

答案 0 :(得分:1)

$in正在查找数组。

所以,最好创建一个你想要找到的字符串数组。

let serviceString = ["test1", "test2", "test3"];

注意:您也可以使用var代替let here

然后你的查询看起来像:

let serviceString = ["test1", "test2", "test3"];
query = db.collection('Services').find({
       'Service': {
           $in: serviceString
      }
});

更多信息:https://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html#special-query-operators

答案 1 :(得分:0)

首先要传递一个完整的字符串

,你需要知道你在做什么
"test1","test2","test3"

做这样的事情

var serviceString = ["test1","test2","test3"];

然后是您的查询

   query = db.collection('Services').find({
            'Service': {
                $in: serviceString
            }
        });