【发布时间】:2021-05-07 06:28:42
【问题描述】:
我有一系列书籍,其中的文档布局类似于
{
"title": "The book",
"author": "Joe Bob",
"tags": ["dogs", "funny", "race"],
"categories": ["fiction", "adventure"]
}
我想使用一个搜索栏根据这些条件中的任何一个来查找一本书。大多数情况下我已经把它记下来了,但我现在不明白它是我应该使用的搜索还是聚合。我也希望我可以让所有内容都不区分大小写,但我不知道如何使用$in 运算符执行类似于$options: 'i' 的操作。
$or : [
{'title': {$regex: search, $options: 'i'}},
{'author': {$regex: search, $options: 'i'}},
{'tags': {$in: [search]}},
{'categories': {$in: [search]}},
]
这是我搜索 100 多个此类文档的最佳方式吗?或者我应该更喜欢聚合。
【问题讨论】:
-
看看Text Search - 因为您正在搜索所有字段。
-
您可以使用:
{'tags': { $elemMatch: { $regex: search, $options: 'i' } }通过正则表达式在数组中搜索
标签: node.js mongodb mongodb-query