Javascript 将Mongo ID转换为字符串以进行比较

Javascript 将Mongo ID转换为字符串以进行比较,javascript,mongodb,tostring,Javascript,Mongodb,Tostring,我有一个搜索功能,根据用户对各种过滤器的输入,从我的mongoDB返回过滤数据。举个例子,我可以这样做,而且效果很好: if (lastName) { let arrlastName = []; arrlastName = lastName.split(","); _.each(arrlastName, (l, key, c) => { arrlastName[key] = new RegExp(arrlastName[key], "i");

我有一个搜索功能,根据用户对各种过滤器的输入,从我的mongoDB返回过滤数据。举个例子,我可以这样做,而且效果很好:

if (lastName) {
    let arrlastName = [];
    arrlastName = lastName.split(",");
    _.each(arrlastName, (l, key, c) => {
        arrlastName[key] = new RegExp(arrlastName[key], "i");
    });
    search['name.last'] = { $in: arrlastName };
}
上面返回一个过滤后的数据集,其中结果与用户在逗号分隔的列表中传入的任何内容匹配

然而,在比较用户输入的值和mongo db中的
\u id
值时,我遇到了一个挑战。当然,我在这里检查的
\u id
不是一个字符串,而是一个mongo objectId——据我所知,这就是问题所在。因此,我试图找出如何转换输入或
\u id
,或两者,以进行有效的比较。这是最初的代码:

if (person) search['_id'] = person;
这不起作用,因为这里的
person
的值是一个字符串,
\u id
不是——正如我所说,
\u id
是一个mongo objectId。那么我如何进行类型转换来处理这个检查呢

我尝试了此操作,但它会导致错误:

if (person) search['_id'].toString() = person;

这种比较的语法是什么样的?

在mongoDB中,可以使用
ObjectId.valueOf()

将返回以下字符串:

507c7f79bcf86cd7994f6c0e

在mongoDB中,您可以使用
ObjectId.valueOf()

将返回以下字符串:

507c7f79bcf86cd7994f6c0e

谢谢你。我还可以动态传入属性名吗?类似于:ObjectId(“_id”).valueOf()?如果不是,我不清楚这将如何解决我的特定问题。那么它必须是:
ObjectId(x)。valueOf()
其中
x
是一个变量,其值是ObjectId字符串,如“507c7f79bcf86cd7994f6c0e”。完美。非常感谢,塞巴斯蒂安!谢谢你。我还可以动态传入属性名吗?类似于:ObjectId(“_id”).valueOf()?如果不是,我不清楚这将如何解决我的特定问题。那么它必须是:
ObjectId(x)。valueOf()
其中
x
是一个变量,其值是ObjectId字符串,如“507c7f79bcf86cd7994f6c0e”。完美。非常感谢,塞巴斯蒂安!