【问题标题】: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 字段

【问题讨论】:

标签: node.js mongodb express mongoose mean-stack


【解决方案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}}]}
  • 是的,正则表达式将匹配文档,而不考虑精确匹配。如果没有正则表达式,它将返回包含给定字符串完全匹配的文档,没有额外的字母。但概念是一样的。
猜你喜欢
  • 2019-04-04
  • 1970-01-01
  • 2015-03-24
  • 2021-12-15
  • 2020-08-15
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 2018-08-09
相关资源
最近更新 更多