将Mongo ID转换为String以进行比较

问题描述 投票:0回答:1

我有一个搜索功能,根据用户对各种过滤器的输入,从我的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中的_id值时遇到了挑战。当然,我在这里检查的_id不是一个字符串,而是一个mongo objectId - 就我所知,这就是问题所在。所以我试图找出如何转换输入或_id或两者来进行有效比较。这是最初的代码:

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

这不起作用,因为这里person的值是一个字符串,而_id不是 - 正如我所说,_id是一个mongo objectId。那么如何进行类型转换来处理此检查呢?

我试过这个,但它会导致错误:

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

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

javascript mongodb tostring
1个回答
2
投票

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

From the documentation

ObjectId("507c7f79bcf86cd7994f6c0e").valueOf()

将返回以下字符串:

507c7f79bcf86cd7994f6c0e
© www.soinside.com 2019 - 2024. All rights reserved.