MongoDB索引子对象属性与索引该子对象属性中的嵌套属性

时间:2017-12-12 23:21:52

标签: mongodb

考虑这个对象:

{
    "_id" : ObjectId("5a3040438c901f42d061edff"),
    "TrackingId" : {
        "FullValue" : "myRandomValue",
        "PrintValue" : "myRandomValue2",
        "BarcodeValue" : "myRandomValue3"
    }
}

执行以下操作之间有什么区别:

db.myColl.createIndex( { TrackingId: 1 }} )

VS

db.myColl.createIndex( { TrackingId.FullValue : 1 } )

正如您在第一个场景中看到的那样,我正在为整个对象建立索引,因为它很小,我没有遇到任何问题。但是,我也可以索引该对象中的属性。那么我的问题是,这些索引中的哪一个会通过 TrackingId.FullValue 来提高效率,为什么呢?

1 个答案:

答案 0 :(得分:1)

基于help文件

  

请注意   虽然查询可以使用索引,但结果集不包括上面的示例文档。在嵌入文档上执行相等匹配时,字段顺序事项和嵌入文档必须完全匹配。有关查询嵌入文档的详细信息,请参阅查询嵌入式文档。

它表明在整个子文档上创建索引时应该小心,即。 { TrackingId: 1 }。您的查询顺序很重要,很可能会造成太多混乱。

相关问题