评估 MongoDB ID 数组



我有一个搜索功能,根据用户对各种过滤器的输入从我的mongoDB返回过滤数据。下面是一个示例,其中返回与lastName值匹配的记录。这个值数组使用以下$in传递给猫鼬/蒙戈:

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 };
  }

你的标签和你的问题的介绍提到了猫鼬,但你所有的逻辑似乎都直接使用了mongo。

如果您使用的是猫鼬,这个答案应该可以解决您的问题。

否则,MongoDB文档中的这个逻辑可能会有所帮助

db.bios.find(
  {
    _id: { $in: [ 5,  ObjectId("507c35dd8fada716c89d0013") ] }
  }
)

最新更新