【发布时间】:2018-08-13 17:39:12
【问题描述】:
我有一个搜索功能,根据用户对各种过滤器的输入,从我的 mongoDB 返回过滤数据。这是一个示例,其中返回与 lastName 值匹配的记录。使用 $in 将这个值数组传递给 Mongoose/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 };
}
上面的代码按预期工作。
但是,除了匹配名称之外,我还想根据评估用户“_id”的过滤器返回记录。挑战在于,这里的“_id”不是字符串,而是mongoDB对象Id。
现在,当我为“_id”搜索单个值时,这很容易做到,在这种情况下,我会这样做:
if (personId) search['_id'] = new mongo.ObjectID(personId);
这也可以按预期工作。这将只返回与_id 匹配的结果。
但是在这种情况下,我如何针对一组值进行评估 - 就像我在这个问题顶部附近的代码中为 lastName 所做的那样?那会是什么样子?这是我尝试过的(没有用):
if (person) {
let personId = new mongo.ObjectID(person);
let arrPerson = [];
arrPerson = personId.split(",");
_.each(arrPerson, (l, key, c) => {
arrPerson[key] = new RegExp(arrPerson[key], "i");
});
search['_id'] = { $in: arrPerson };
}
【问题讨论】:
标签: javascript node.js mongodb mongoose