dynamic - 在 MongoDB 中为动态添加的字段创建索引

标签 dynamic indexing

我有一个 MongoDB 集合的模式,其中的字段被动态添加到文档中。当我搜索具有动态添加字段的文档时,查询非常慢。 示例文档如下所示:

{
    "_id" : ObjectId("4657439ad7f616df3f49"),
    "name" : "test1",
    "created_at" : ISODate("2014-06-13T10:48:41.501Z"),
    "Status" : "NEW",
    "email":"test@test.com",
    "rank":1278

}

字段名称、电子邮件、等级由用户动态创建并添加到文档中。 查询这些字段中的任何一个都需要很长时间才能响应。没有在这些字段上创建索引,因为性质和字段本身是动态添加的。 我试过 .explain(),这里是输出:

{
    "cursor" : "BasicCursor",
    "isMultiKey" : false,
    "n" : 1,
    "nscannedObjects" : 1683063,
    "nscanned" : 1683063,
    "nscannedObjectsAllPlans" : 1683063,
    "nscannedAllPlans" : 1683063,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 4,
    "nChunkSkips" : 0,
    "millis" : 1708,
    "indexBounds" : {

    }

这清楚地表明需要做索引。但我不知道如何在这些非确定性字段上创建索引。 注意*:该文档没有讨论的嵌入式文档here .我是 MongoDB 的新手。

最佳答案

从 4.2 版本开始,MongoDb 宣布了“通配符索引”。这就是您要找的。这是一个如何创建通配符索引的示例。

db.myCollection.createIndex( { "$**": 1 } );

甚至你可以像这样为子文档创建通配符索引:

db.myCollection.createIndex( { "subdocument.$**": 1 } );

更多详情:https://docs.mongodb.com/manual/core/index-wildcard/

关于dynamic - 在 MongoDB 中为动态添加的字段创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24205917/

相关文章:

indexing - Elasticsearch:在我的英语分析器上添加同义词过滤器

indexing - Lucene.NET 更新未删除搜索词

python 2.7 无法索引行但获取字母

javascript - 更新字体大小后不计算新的 offsetHeight

c# - 表达式调用和计数

c - C中的段错误(具有动态内存分配的二维数组)

C# 将 IntPtr 转换为 int

时间:2019-03-17 标签:c#dynamiccompare

python - 基于索引对DataFrame进行分箱

python - 索引二维数组/列表