使用对象数组过滤字符串文档
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文档中过滤对象数组? [复制]