gpt4 book ai didi

mongodb - mongodb 创建准确的索引

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:41 25 4
gpt4 key购买 nike

我想为以下查询创建一个 mongodb 索引:

{
"$and": [
{
"$or": [
{
"connector_name": {
"$options": "i",
"$regex": "plop"
}
},
{
"connector": {
"$options": "i",
"$regex": "plop"
}
},
{
"component": {
"$options": "i",
"$regex": "plop"
}
},
{
"resource": {
"$options": "i",
"$regex": "plop"
}
},
{
"domain": {
"$options": "i",
"$regex": "plop"
}
},
{
"perimeter": {
"$options": "i",
"$regex": "plop"
}
}
]
},
{
"$or": [
{
"event_type": {
"$eq": "check"
}
}
]
}
]
}

我尝试了以下索引创建失败:

第一个索引尝试:

db.events.ensureIndex({'event_type': 1});
db.events.ensureIndex({'connector_name': 1});
db.events.ensureIndex({'connector': 1});
db.events.ensureIndex({'component': 1});
db.events.ensureIndex({'resource': 1});
db.events.ensureIndex({'domain': 1});
db.events.ensureIndex({'perimeter': 1});

二级索引尝试:

db.events.ensureIndex({'event_type': 1, 'connector_name': 1});
db.events.ensureIndex({'event_type': 1, 'connector': 1});
db.events.ensureIndex({'event_type': 1, 'component': 1});
db.events.ensureIndex({'event_type': 1, 'resource': 1});
db.events.ensureIndex({'event_type': 1, 'domain': 1});
db.events.ensureIndex({'event_type': 1, 'perimeter': 1});

第三个指标尝试:

db.events.ensureIndex(
{
'event_type': 1,
'connector_name': 1,
'connector': 1,
'component': 1,
'resource': 1,
'domain': 1,
'perimeter': 1,
})

每次及以下mongo explain query ,我查看了“indexOnly”和“nscanned”字段,这意味着(据我所知)mongo 很好地使用了我的索引。但是,到目前为止,结果很差,我的查询仍然没有使用索引。经过我所有的尝试,我仍然不明白 mongodb 索引系统哪里出了问题。

最佳答案

db.collection.ensureIndex({connectorname:"text",connector:"text",component:"text"...})

在字段上创建文本索引。然后,您可以像这样查询

db.collection.find({$or:[{$text:{$search:"plop"},{event_type:"check"}]})

这将返回所有包含在为其创建文本索引的字段中的搜索词或具有 event_type == "check"的文档。

参见 the MongoDB docs on "Text Indices"了解详情。

关于mongodb - mongodb 创建准确的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26253783/

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