将 Mongo ID 转换为字符串以进行比较
Converting Mongo ID to String to do Comparison
我有一个搜索功能,returns 根据用户对各种过滤器的输入从我的 mongo 数据库中过滤数据。因此,例如我可以这样做并且有效:
if (lastName) {
let arrlastName = [];
arrlastName = lastName.split(",");
_.each(arrlastName, (l, key, c) => {
arrlastName[key] = new RegExp(arrlastName[key], "i");
});
search['name.last'] = { $in: arrlastName };
}
以上 returns 过滤后的数据集,其结果与用户在逗号分隔列表中传入的内容相匹配。
但是,我 运行 遇到了将用户输入的值与 mongo 数据库中的 _id
值进行比较的挑战。当然,我在这里检查的 _id
不是字符串,而是 mongo objectId——据我所知,这就是问题所在。所以我想弄清楚如何转换输入或 _id
,或两者都进行有效比较。这是初始代码:
if (person) search['_id'] = person;
那行不通,因为这里 person
的值是一个字符串,而 _id
不是——正如我所说,_id
是一个 mongo 对象 ID。那么如何进行类型转换来处理此检查?
我试过了,但它会导致错误:
if (person) search['_id'].toString() = person;
这种比较的语法是什么样的?
在mongoDB中你可以使用ObjectId.valueOf()
ObjectId("507c7f79bcf86cd7994f6c0e").valueOf()
将return以下字符串:
507c7f79bcf86cd7994f6c0e
我有一个搜索功能,returns 根据用户对各种过滤器的输入从我的 mongo 数据库中过滤数据。因此,例如我可以这样做并且有效:
if (lastName) {
let arrlastName = [];
arrlastName = lastName.split(",");
_.each(arrlastName, (l, key, c) => {
arrlastName[key] = new RegExp(arrlastName[key], "i");
});
search['name.last'] = { $in: arrlastName };
}
以上 returns 过滤后的数据集,其结果与用户在逗号分隔列表中传入的内容相匹配。
但是,我 运行 遇到了将用户输入的值与 mongo 数据库中的 _id
值进行比较的挑战。当然,我在这里检查的 _id
不是字符串,而是 mongo objectId——据我所知,这就是问题所在。所以我想弄清楚如何转换输入或 _id
,或两者都进行有效比较。这是初始代码:
if (person) search['_id'] = person;
那行不通,因为这里 person
的值是一个字符串,而 _id
不是——正如我所说,_id
是一个 mongo 对象 ID。那么如何进行类型转换来处理此检查?
我试过了,但它会导致错误:
if (person) search['_id'].toString() = person;
这种比较的语法是什么样的?
在mongoDB中你可以使用ObjectId.valueOf()
ObjectId("507c7f79bcf86cd7994f6c0e").valueOf()
将return以下字符串:
507c7f79bcf86cd7994f6c0e