Node.js 数组内mongodb和nodejs中不区分大小写的搜索
我想执行标记搜索,它必须对标记关键字不区分大小写。我需要一个单一的关键字搜索这个,以及如何做多个关键字了。但问题是,当我用以下查询进行搜索时,我什么也得不到。我是NodeJs和MongoDb的新手,因此如果查询中有任何错误,请纠正我 标签可以是“tag1”或“tag1”或“tag1” 对于我使用的单标记关键字搜索(我没有得到任何结果): 对于多标记关键字搜索(也需要使其不区分大小写:() 数据库中的记录集:Node.js 数组内mongodb和nodejs中不区分大小写的搜索,node.js,mongodb,case-insensitive,Node.js,Mongodb,Case Insensitive,我想执行标记搜索,它必须对标记关键字不区分大小写。我需要一个单一的关键字搜索这个,以及如何做多个关键字了。但问题是,当我用以下查询进行搜索时,我什么也得不到。我是NodeJs和MongoDb的新手,因此如果查询中有任何错误,请纠正我 标签可以是“tag1”或“tag1”或“tag1” 对于我使用的单标记关键字搜索(我没有得到任何结果): 对于多标记关键字搜索(也需要使其不区分大小写:() 数据库中的记录集: { "results": { "products": [
{
"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
}
}
为要搜索的字段创建文本索引。(默认不区分大小写) 欲知更多选择 将$text运算符与$search结合使用以搜索内容 欲知更多选择 单项搜索
db.somecollection.find({$text: { $search: "Tag3"}});
db.somecollection.find({'Tags.TagText': {$regex: /^Tag3$/i}}).pretty();
使用多个搜索词进行搜索
db.somecollection.find({$text: { $search: "Tag3 Tag5 Tag16"}});
db.somecollection.find({'Tags.TagText': {$in: [/^Tag11$/i, /^Tag6$/i]}}).pretty();
更新:
看起来您正在寻找不区分大小写的相等,这可以通过正则表达式轻松实现。您将不需要文本搜索。请删除文本搜索索引
单项搜索
db.somecollection.find({$text: { $search: "Tag3"}});
db.somecollection.find({'Tags.TagText': {$regex: /^Tag3$/i}}).pretty();
使用多个搜索词进行搜索
db.somecollection.find({$text: { $search: "Tag3 Tag5 Tag16"}});
db.somecollection.find({'Tags.TagText': {$in: [/^Tag11$/i, /^Tag6$/i]}}).pretty();
为要搜索的字段创建文本索引。(默认不区分大小写) 欲知更多选择 将$text运算符与$search结合使用以搜索内容 欲知更多选择 单项搜索
db.somecollection.find({$text: { $search: "Tag3"}});
db.somecollection.find({'Tags.TagText': {$regex: /^Tag3$/i}}).pretty();
使用多个搜索词进行搜索
db.somecollection.find({$text: { $search: "Tag3 Tag5 Tag16"}});
db.somecollection.find({'Tags.TagText': {$in: [/^Tag11$/i, /^Tag6$/i]}}).pretty();
更新:
看起来您正在寻找不区分大小写的相等,这可以通过正则表达式轻松实现。您将不需要文本搜索。请删除文本搜索索引
单项搜索
db.somecollection.find({$text: { $search: "Tag3"}});
db.somecollection.find({'Tags.TagText': {$regex: /^Tag3$/i}}).pretty();
使用多个搜索词进行搜索
db.somecollection.find({$text: { $search: "Tag3 Tag5 Tag16"}});
db.somecollection.find({'Tags.TagText': {$in: [/^Tag11$/i, /^Tag6$/i]}}).pretty();
嗨,Sagar,你能告诉我一件事吗,这是对标签的精确搜索吗?我的意思是搜索标签“适合你这个年龄的正确护肤品是什么”与标签“护肤品”的产品相匹配。这不应该发生。只有当我用标签“护肤品”搜索时,这个产品才会出现……你能帮忙吗?提前谢谢你将更新添加到答案中。对不起,f或者不清楚你的要求。看一看,让我知道。嗨,萨加尔,你能告诉我一件事吗,这是对标签的精确搜索吗?我的意思是,搜索标签“适合你年龄的正确护肤品是什么”与标签“护肤品”的产品相匹配。这不应该发生。只有当我用标签“护肤品”搜索时,这个产品才会出现e、 …您能帮忙吗?提前感谢您将更新添加到答案中。很抱歉,您没有清楚地理解您的要求。请查看并让我知道。