使用对象数组过滤字符串文档

Posted

技术标签:

【中文标题】使用对象数组过滤字符串文档【英文标题】:filter by string documents with array of object 【发布时间】:2020-12-16 12:04:48 【问题描述】:

我有一个架构,其中包含一些属性和对象数组作为属性之一,如下所示:

const Project = mongoose.Schema(
  _id: String,
  name: String,
  comments:[String]
  date: Date,
  tests:[
          description: String,
          comments:[String]
        ]
);

我希望能够过滤所有包含某些字符串的文档。

查询应该在“项目”架构的“名称”字段内和测试对象的描述字段内搜索字符串。 并返回包含该字符串的所有文档(在项目名称或他的测试描述之一中)

1.我应该使用什么查询?

2.同样的问题,但除了描述之外,还过滤了架构和测试 cmets 字段

【问题讨论】:

可能重复***.com/questions/31859800/… 【参考方案1】:
Project.find( $or: [ name: 'something', comments: 'something', 'tests.description': 'something' , 'tests.comments': 'something' ] )

让我知道这是否适合你。

【讨论】:

谢谢,但由于某种原因,它对我不起作用。起作用的是正则表达式的使用: Project.find($or:["tests.description": "$regex": req.params.filterStr, "name": "$regex": req.params.filterStr,"cmets": "$regex": req.params.filterStr] 是的,正则表达式将匹配文档,而不考虑精确匹配。如果没有正则表达式,它将返回包含给定字符串完全匹配的文档,没有额外的字母。但概念是一样的。

以上是关于使用对象数组过滤字符串文档的主要内容,如果未能解决你的问题,请参考以下文章

如何在mongodb的单个json文档中过滤对象数组? [复制]

Mongodb查询过滤文档中的嵌套对象数组

无法根据另一个对象数组过滤对象数组

基于单独数组中的对象过滤 NSDictionaries 数组

如何在 mongo 存储库中过滤对象数组

Firestore - 查询数组字段中对象的过滤器位置