How to Create a nested index in MongoDB?

后端 未结 3 772
暖寄归人
暖寄归人 2020-12-14 05:37

A. How do I index nested and all of it\'s values?

B. How do I index valuetwo?

{
    id: 00000,
    attrs: {
        nested:{
         


        
相关标签:
3条回答
  • 2020-12-14 06:34

    You'd create them just as if you were creating an index on a top level field:

    db.collection.ensureIndex({"attrs.nested.value": 1})
    

    You do need to explicitly create indexes on each field.

    0 讨论(0)
  • 2020-12-14 06:36

    MongoDB automatically creates a multikey index if any indexed field is an array; you do not need to explicitly specify the multikey type.

    This will work for both the scenario's db.coll.createIndex( { "addr.pin": 1 } )

    Scenario 1 nested OBJECTS

    {
      userid: "1234",
      addr: {
        pin:"455522"
      }
    },
    {
      userid: "1234",
      addr: {
        pin:"777777"
      }
    }
    

    Scenario 2 nested Arrays

    {
      userid: "1234",
      addr: [
        { pin:"455522" },
        { pin:"777777" },
      ]
    }
    

    https://docs.mongodb.com/manual/core/index-multikey/

    0 讨论(0)
  • 2020-12-14 06:41

    A. to index all the properties in "nested" you will have to index them separately:

    db.collection.createIndex({"attrs.nested.value": 1});
    db.collection.createIndex({"attrs.nested.valuetwo": 1});
    

    This can be done in one command with:

    db.collection.createIndexes([{"attrs.nested.value": 1}, {"attrs.nested.valuetwo": 1}]);
    

    B. to index just "valuetwo":

    db.collection.createIndex({"attrs.nested.valuetwo": 1})
    

    Use createIndex over ensureIndex as ensureIndex is Deprecated since version 3.0.0

    0 讨论(0)
提交回复
热议问题