gpt4 book ai didi

node.js - 在数组内的 mongodb 和 nodejs 中不区分大小写的搜索

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:47 25 4
gpt4 key购买 nike

我想执行标签搜索,该搜索必须对标签关键字不区分大小写。我需要这个来进行单个关键字搜索,以及如何对多个关键字执行此操作。但问题是,当我使用以下查询进行搜索时,我什么也没得到。我是 NodeJs 和 MongoDb 的新手,所以如果查询中有任何错误,请纠正我。

标签可以是“tag1”、“TAG1”或“taG1”。

对于我使用过的单标签关键字搜索(我没有得到任何结果):

db.somecollection.find({'Tags':{'TagText': new RegExp('Tag5',"i")}, 'Status':'active'})

用于多个标签关键字搜索(也需要不区分大小写:( )

db.somecollection.find({'Tags':{'TagText': {"$in": ['Tag3','Tag5', 'Tag16']}}, 'Status':'active'})

数据库中的记录集:

{
"results": {
"products": [
{
"_id": "5858cc242dadb72409000029",
"Permalink": "some-permalink-1",
"Tags": [
{"TagText":"Tag1"},
{"TagText":"Tag2"},
{"TagText":"Tag3"},
{"TagText":"Tag4"},
{"TagText":"Tag5"}
],
"Viewcount": 3791
},
{
"_id": "58523cc212dadb72409000029",
"Permalink": "some-permalink-2",
"Tags": [
{"TagText":"Tag8"},
{"TagText":"Tag2"},
{"TagText":"Tag1"},
{"TagText":"Tag7"},
{"TagText":"Tag2"}
],
"Viewcount": 1003
},
{
"_id": "5858cc242dadb11839084523",
"Permalink": "some-permalink-3",
"Tags": [
{"TagText":"Tag11"},
{"TagText":"Tag3"},
{"TagText":"Tag1"},
{"TagText":"Tag6"},
{"TagText":"Tag18"}
],
"Viewcount": 2608
},
{
"_id": "5850cc242dadb11009000029",
"Permalink": "some-permalink-4",
"Tags": [
{"TagText":"Tag14"},
{"TagText":"Tag12"},
{"TagText":"Tag4"},
{"TagText":"Tag5"},
{"TagText":"Tag7"}
],
"Viewcount": 6202
},

],
"count": 4
}
}

最佳答案

为您要搜索的字段创建文本索引。 (默认不区分大小写)

db.somecollection.createIndex( { "Tags.TagText": "text" } )

欲了解更多选项,https://docs.mongodb.com/v3.2/core/index-text/#index-feature-text

将 $text 运算符与 $search 结合使用来搜索内容。

欲了解更多选项,https://docs.mongodb.com/v3.2/reference/operator/query/text/#op._S_text

使用单个词进行搜索

db.somecollection.find({$text: { $search: "Tag3"}});

使用多个搜索词进行搜索

db.somecollection.find({$text: { $search: "Tag3 Tag5 Tag16"}});

更新:

看起来您正在寻找不区分大小写的相等性,这可以通过正则表达式轻松实现。您不需要文本搜索。删除文本搜索索引。

使用单个词进行搜索

db.somecollection.find({'Tags.TagText': {$regex: /^Tag3$/i}}).pretty();

使用多个搜索词进行搜索

db.somecollection.find({'Tags.TagText': {$in: [/^Tag11$/i, /^Tag6$/i]}}).pretty();

关于node.js - 在数组内的 mongodb 和 nodejs 中不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41448026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com