Can I index a key in a multidimensional array?










1















Say I have a collection with documents like this




"top_key" : [
[

"key" : "value1"
,

"key" : "value2"

],
[

"key" : "value3"
,

"key" : "value4"

]
]



Can I create an index for key?










share|improve this question

















  • 1





    No. the doc reads: "Multikey indexes can be constructed over arrays that hold both scalar values and nested documents". Nested arrays are neither documents nor scalars.

    – Alex Blex
    Apr 21 '17 at 9:59















1















Say I have a collection with documents like this




"top_key" : [
[

"key" : "value1"
,

"key" : "value2"

],
[

"key" : "value3"
,

"key" : "value4"

]
]



Can I create an index for key?










share|improve this question

















  • 1





    No. the doc reads: "Multikey indexes can be constructed over arrays that hold both scalar values and nested documents". Nested arrays are neither documents nor scalars.

    – Alex Blex
    Apr 21 '17 at 9:59













1












1








1








Say I have a collection with documents like this




"top_key" : [
[

"key" : "value1"
,

"key" : "value2"

],
[

"key" : "value3"
,

"key" : "value4"

]
]



Can I create an index for key?










share|improve this question














Say I have a collection with documents like this




"top_key" : [
[

"key" : "value1"
,

"key" : "value2"

],
[

"key" : "value3"
,

"key" : "value4"

]
]



Can I create an index for key?







mongodb






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Apr 21 '17 at 9:18









ziyuangziyuang

1,77342756




1,77342756







  • 1





    No. the doc reads: "Multikey indexes can be constructed over arrays that hold both scalar values and nested documents". Nested arrays are neither documents nor scalars.

    – Alex Blex
    Apr 21 '17 at 9:59












  • 1





    No. the doc reads: "Multikey indexes can be constructed over arrays that hold both scalar values and nested documents". Nested arrays are neither documents nor scalars.

    – Alex Blex
    Apr 21 '17 at 9:59







1




1





No. the doc reads: "Multikey indexes can be constructed over arrays that hold both scalar values and nested documents". Nested arrays are neither documents nor scalars.

– Alex Blex
Apr 21 '17 at 9:59





No. the doc reads: "Multikey indexes can be constructed over arrays that hold both scalar values and nested documents". Nested arrays are neither documents nor scalars.

– Alex Blex
Apr 21 '17 at 9:59












1 Answer
1






active

oldest

votes


















0














Looking at this SO answer: MongoDB Query Help - query on values of any key in a sub-object



NOTE: This answer contains suggestion to update the schema in order to achieve desired result.
Change the schema from:




"top_key" : [
[

"key" : "value1"
,

"key" : "value2"

],
[

"key" : "value3"
,

"key" : "value4"

]
]



to something like this:




"top_key" : [

key_name: "key", key_value: "value1"
,

key_name: "key", key_value: "value2"
,

key_name: "key", key_value: "value3"
,

key_name: "key", key_value: "value4"

]



Then you can index on top_key.key_value and query in a way:



db.settings.ensureIndex( "top_key.key_value" : 1)

db.settings.find( "top_key.key_value" : "value4" )


Do let me know if it helps.






share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f43538710%2fcan-i-index-a-key-in-a-multidimensional-array%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Looking at this SO answer: MongoDB Query Help - query on values of any key in a sub-object



    NOTE: This answer contains suggestion to update the schema in order to achieve desired result.
    Change the schema from:




    "top_key" : [
    [

    "key" : "value1"
    ,

    "key" : "value2"

    ],
    [

    "key" : "value3"
    ,

    "key" : "value4"

    ]
    ]



    to something like this:




    "top_key" : [

    key_name: "key", key_value: "value1"
    ,

    key_name: "key", key_value: "value2"
    ,

    key_name: "key", key_value: "value3"
    ,

    key_name: "key", key_value: "value4"

    ]



    Then you can index on top_key.key_value and query in a way:



    db.settings.ensureIndex( "top_key.key_value" : 1)

    db.settings.find( "top_key.key_value" : "value4" )


    Do let me know if it helps.






    share|improve this answer



























      0














      Looking at this SO answer: MongoDB Query Help - query on values of any key in a sub-object



      NOTE: This answer contains suggestion to update the schema in order to achieve desired result.
      Change the schema from:




      "top_key" : [
      [

      "key" : "value1"
      ,

      "key" : "value2"

      ],
      [

      "key" : "value3"
      ,

      "key" : "value4"

      ]
      ]



      to something like this:




      "top_key" : [

      key_name: "key", key_value: "value1"
      ,

      key_name: "key", key_value: "value2"
      ,

      key_name: "key", key_value: "value3"
      ,

      key_name: "key", key_value: "value4"

      ]



      Then you can index on top_key.key_value and query in a way:



      db.settings.ensureIndex( "top_key.key_value" : 1)

      db.settings.find( "top_key.key_value" : "value4" )


      Do let me know if it helps.






      share|improve this answer

























        0












        0








        0







        Looking at this SO answer: MongoDB Query Help - query on values of any key in a sub-object



        NOTE: This answer contains suggestion to update the schema in order to achieve desired result.
        Change the schema from:




        "top_key" : [
        [

        "key" : "value1"
        ,

        "key" : "value2"

        ],
        [

        "key" : "value3"
        ,

        "key" : "value4"

        ]
        ]



        to something like this:




        "top_key" : [

        key_name: "key", key_value: "value1"
        ,

        key_name: "key", key_value: "value2"
        ,

        key_name: "key", key_value: "value3"
        ,

        key_name: "key", key_value: "value4"

        ]



        Then you can index on top_key.key_value and query in a way:



        db.settings.ensureIndex( "top_key.key_value" : 1)

        db.settings.find( "top_key.key_value" : "value4" )


        Do let me know if it helps.






        share|improve this answer













        Looking at this SO answer: MongoDB Query Help - query on values of any key in a sub-object



        NOTE: This answer contains suggestion to update the schema in order to achieve desired result.
        Change the schema from:




        "top_key" : [
        [

        "key" : "value1"
        ,

        "key" : "value2"

        ],
        [

        "key" : "value3"
        ,

        "key" : "value4"

        ]
        ]



        to something like this:




        "top_key" : [

        key_name: "key", key_value: "value1"
        ,

        key_name: "key", key_value: "value2"
        ,

        key_name: "key", key_value: "value3"
        ,

        key_name: "key", key_value: "value4"

        ]



        Then you can index on top_key.key_value and query in a way:



        db.settings.ensureIndex( "top_key.key_value" : 1)

        db.settings.find( "top_key.key_value" : "value4" )


        Do let me know if it helps.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 14 '18 at 15:00









        Nishutosh SharmaNishutosh Sharma

        1,16421528




        1,16421528





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f43538710%2fcan-i-index-a-key-in-a-multidimensional-array%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

            Syphilis

            Darth Vader #20