首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当某些字段可以为null或字符串数组时,添加复合索引

问当某些字段可以为null或字符串数组时,添加复合索引
EN

Stack Overflow用户
提问于 2015-06-02 23:43:59
回答 2查看 909关注 0票数 0

我有一个mongodb集合。

代码语言:javascript
复制
{
    "p1": "V1",
    "p2": ["V2","V3","V4"],
    "p3": ["V5","V6","V7"],
    "p4": "V8"
}

我的文档可能没有p2或p3。我应该如何创建我的索引?

EN

回答 2

Stack Overflow用户

发布于 2015-06-03 02:45:12

假设p2和p3可能缺失,或者可能等于null,我会选择如下的sparse index:

db.myCollection.createIndex( { p1:1, p2:1, p3:1 } , { sparse: true } )

票数 0
EN

Stack Overflow用户

发布于 2015-06-03 03:14:04

根据您的问题,很明显您将创建一个复合多键索引,其中有两个是数组。但是compound multikey index的限制是,它最多只能有一个值为数组的索引字段。

复合多键索引对于复合多键索引,每个被索引的文档最多只能有一个值为数组的索引字段。因此,如果文档的多个待索引字段是数组,则不能创建复合多键索引。或者,如果复合多键索引已经存在,则不能插入违反此限制的文档。

因此,根据mongodb手册,您可以将p1或p2作为索引字段。

从here了解有关复合多键索引的更多信息

您的文档可能没有索引字段,在这种情况下,可以使用稀疏索引。

对于给定的集合:

代码语言:javascript
复制
db.collection.createIndex( { p1:1, p2:1, p4:1 } , { sparse: true } )

将创建一个Sparse Index。但您必须考虑以下限制:

如果任何文档不包含索引字段,则稀疏索引将不包含该document.

  • Use的条目。
  1. hint可以解决限制1,但可能得到不完整的结果。

您可以从here了解有关稀疏索引的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30600663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档