javascript - 评估 MongoDB ID 数组

标签 javascript node.js mongodb mongoose

我有一个搜索功能,根据用户对各种过滤器的输入,从我的 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 };
  }

最佳答案

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

如果您使用 Mongoose this answer应该能解决你的问题。

否则这个逻辑来自MongoDB documentation可能会有所帮助

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

关于javascript - 评估 MongoDB ID 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121087/

相关文章:

javascript - 下拉单击来自 mysql 的 PHP 数据

javascript - 解析函数突然返回无效的 json

node.js - CloudFlare如何指向2087端口https?

javascript - 需要帮助使该翻译函数能够处理数组输入

node.js - Mongoose 聚合不支持 writeConcern

javascript - 如何在 Vue 中删除谷歌地图标记?

javascript - 显示 Google 图表的一半

node.js - XMLHttpRequest 无法加载 http ://127. 0.0.1 :1337/. 请求的资源上不存在 'Access-Control-Allow-Origin' header

node.js - 如何从磁力链接或 infohash 创建 torrent 文件

mongodb - 复合索引可以用于搜索MongoDB中的单个字段吗?