gpt4 book ai didi

javascript - mongodb——尝试根据查询构建复合索引

转载 作者:行者123 更新时间:2023-12-03 06:50:01 25 4
gpt4 key购买 nike

对于我尝试使用的查询来说,什么是一个好的索引(或多个索引?),我有点困惑。这个查询并不独特,但它几乎是我的查询现在的样子的要点。我已用占位符替换了值,因此它们可能没有多大意义。最后还需要排序。

{ oId: 1,
status: { '$in': [ 'STATUS1', 'STATUS2' ] },
'$and':
[ { '$or':
[ { '$or':
[ { prov: 'P1',
'$or': [ { tags: { '$in': [ 'tag1' ] } } ] },
{ prov: 'P2',
'$or': [ { tags: { '$in': [ 'tag1' ] } } ] },
{ prov: 'P3',
'$or': [ { tags: { '$in': [ 'tag1' ] } } ] },
{ prov: 'P4',
'$or': [ { tags: { '$in': [ 'tag1' ] } } ] } ] },
{ '$or':
[ { prov: 'P1',
login: { '$in': [ 'login1' ] } },
{ prov: 'P2',
login: { '$in': [ 'login2' ] } },
{ prov: 'P3',
login: { '$in': [ 'login1' ] } },
{ prov: 'P3',
login: { '$in': [ 'login3' ] } } ] },
{ '$or':
[ { prov: 'P3',
group: { '$in': [ 'group1' ] } } ] },
{ '$or':
[ { prov: 'P2',
locationId: { '$in': [ '1', '2' ] } } ] } ] },
{ '$or':
[ { prov: 'P1',
'$or':
[ { group: 'group2' },
{ login: 'login5' } ] },
{ prov: 'P2',
'$or':
[ { group: 'group3' },
{ login: 'login3' } ] },
{ prov: 'P3',
'$or': [ { login: 'login3' } ] },
{ prov: 'P4',
'$or': [ { login: 'login3' } ] } ] } ] }, {sort: {createdAt: -1}}

示例文档如下所示:

{
oId: 1,
login: 'login1',
locationId: 2,
prov: 'P1',
status: 'STATUS1',
group: 'group1',
createdAt: <DateTime>,
tags: ['tag1', 'tag2']
}

我理解如何在少量字段上形成复合索引的原理,但似乎我不太明白在我自己的情况下如何实现它。

当然,任何意见都会受到赞赏。

最佳答案

我会创建一个类似这样的索引。

{ oId: 1,状态:-1,prov:-1,登录:-1,locationId:-1,createdAt:-1,组:-1,标签:-1 }

因此,就复杂索引而言,对复合索引唯一重要的部分是第一个选项。因此,任何使用 oId 的内容以及索引其余部分的任意组合和顺序。会使用索引。与简单索引相比唯一会改变的部分是排序顺序不能随着复合索引而改变。

祝你好运。

关于javascript - mongodb——尝试根据查询构建复合索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548221/

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