我正在try 为带有数组搜索输入的finDigi文档找到解决方案.下一行的解决方案很好,但我需要做更复杂的搜索.

const searchInput = ["United States","Mexico"]  
model.find({country: { $in: searchInput },})

数据有各种形式的"Country"字段,因此我需要使用正则表达式.如果只搜索一个国家/地区,则以下解决方案有效.

model.find({country : {$regex : "United States"}});

但我需要将前两个解决方案结合起来.我是否需要对数组中的每个元素分别进行搜索,或者是否有更好的解决方案?

Example data:

0: {country: "United States"}
1: {country: "Mexico"}
2: {country: "Canada"}
3: {country: "United States | Canada"}

从这些文档中,我只想找到那些匹配搜索结果的文档["United States","墨西哥"].

Expected results:

0: {country: "United States"}
1: {country: "Mexico"}
3: {country: "United States | Canada"}

谢谢你的帮助

推荐答案

您可以使用管道代替数组,如下所示:

model.find({
  country: {
    $regex: "United States|Mexico"
  }
})

看看它在playground example号公路上是如何工作的.

当然,您可以使用聚合管道来构建带有来自数组的管道的字符串,但我认为在代码中使用简单的find会更简单、更干净

Node.js相关问答推荐

如何解决无法获得本地颁发者证书的问题

聚合发布/订阅消息

根据我的测试,为什么在编写Varint代码方面,NodeJS要比Rust快这么多?

JsonwebToken过期后如何注销和清除cookie?

React原生Nodejs兼容性问题

Puppeteer 的 BrowserFetcher 发生了什么?

使用 playwright 获取页面中同一 url 的所有响应

在 TypeScript 中正确键入 MongoDB find 方法

如何修复node.js中的错误代码无法加载资源:服务器响应状态为403(禁止)

几个 lambda 共有的函数

使用NodeJS通过服务账号列出Google Workspace用户

我应该如何解决这个 Angular node 包模块依赖冲突?

Next.js 在我的电脑上没有构建错误,但它们在使用 Vercel 部署时发生

kubernetes 上的 nextjs 无法启动

使用 node/express/Multer,您如何首先判断参数?

在 Javascript 逻辑中访问 EJS 变量

提供静态文件到底是什么意思?

Puppeteer 错误:未下载 Chromium 修订版

如何解决 Socket.io 404(未找到)错误?

当我try 向我的 S3 存储桶 (Node.js) 发送内容时,AWS 缺少凭证