Javascript 在字符串数组中查找所有匹配的实时文档

Javascript 在字符串数组中查找所有匹配的实时文档,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我有一个mongoose模式模型,它有一个字段名标记,它是一个字符串数组,用于为每个文档存储一些标记。我想要一些东西,例如,如果我有一个像[“测试”,“鉴定”,“测试文档”]标记的数组,当我搜索测试时,它返回所有带有标记的文档,它们是鉴定或测试文档,它应该是工作的,例如像通配符(测试*)。。。。有人能帮忙吗 这就是模型 tags: { type: [ { type: String, }, ], }, 首先,如果可能的话,我会调整模式。您的架构可以更改为: t

我有一个mongoose模式模型,它有一个字段名标记,它是一个字符串数组,用于为每个文档存储一些标记。我想要一些东西,例如,如果我有一个像[“测试”,“鉴定”,“测试文档”]标记的数组,当我搜索测试时,它返回所有带有标记的文档,它们是鉴定或测试文档,它应该是工作的,例如像通配符(测试*)。。。。有人能帮忙吗

这就是模型

tags: {
  type: [
    {
      type: String,
    },
  ],
},

首先,如果可能的话,我会调整模式。您的架构可以更改为:

tags: [String]
这也仅仅意味着一个字符串数组。您不需要总是使用/指定
type
键,除非您计划向标记模式添加更多字段,但从问题看,它不像这样

您可以执行以下操作来选择具有特定标记的所有文档。既然我不知道你的模型叫什么,我就叫它“模型”


仅当阵列中有其他mongodb文档时,才使用后者。由于数组中只有字符串,请使用第一种方法。

感谢您的重播。我知道你对我说的解决方案,但问题是我有一些单独的文档,它们有“test”、“test2”、“testtesttest”等标签。我想当我查询查找“test”标记时,它会返回与test具有相同值的其他标记,如“test2”和其他一些标记。。。。。。就像搜索文件并使用通配符->test*(意味着test和其他文件包含test)。。。有可能有这样的东西吗?老兄,我找到了答案,谢谢你的回答。。。解决方案是我必须在我的查询中使用find({tags:{$regex:
${tag}
,$options:“I”}}这个
await Model.find({ tags: "tagName" })
await Model.find({ tags: { $elemMatch: { someKey: someValue } } })