Re: Copying indexes from one collection to another is not copying unqiue indexes and background=true setting

From: Chris Cunningham <chris.cunningham@xxxxxxxxxxx>
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Mon, 2 May 2016 22:36:22 -0700 (PDT)
Why ads?



Hello RG,


The reason you are not getting `background` and `unique` after the copy is 
because these are index options and not the actual index.  You will need to 
pass these options when present in your collection.


For more information please see [index options 
<https://docs.mongodb.org/manual/reference/method/db.collection.createIndex/#options-for-all-index-types>
].


Please note that `ensureIndex()` has been deprecated and `createIndex()` is 
now used.


Let us know if you have any further questions.


Regards,


Chris

On Sunday, May 1, 2016 at 6:55:49 AM UTC+10, RG wrote:

Hi,

I am copying indexes from one collection to another using :

db.ORIGINAL_TABLE.getIndexes().forEach( function( i ) { 
db.COPY_TABLE.ensureIndex( i.key );} );


All the indexes are copied over except unqiues and background=true:

example result

Original Table 


    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "analytics_api..ORIGINAL_TABLE"
    },
   









* {        "v" : 1,        "unique" : true,        "key" : {            
"accounttoken" : 1,            "date" : -1        },        "name" : 
"accounttoken_1_date_-1",        "ns" : "analytics_api..ORIGINAL_TABLE",    
    "background" : true    },*
    {
        "v" : 1,
        "key" : {
            "embeds" : -1
        },
        "name" : "embeds_-1",
        "ns" : "analytics_api..ORIGINAL_TABLE",
        "background" : true
    },
    {
        "v" : 1,
        "key" : {
            "plays" : -1
        },
        "name" : "plays_-1",
        "ns" : "analytics_api..ORIGINAL_TABLE",
        "background" : true
    },
    {
        "v" : 1,
        "key" : {
            "completes" : -1
        },
        "name" : "completes_-1",
        "ns" : "analytics_api..ORIGINAL_TABLE",
        "background" : true
    }
]

Copied Table

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "analytics_api.COPY_TABLE"
    },








*    {        "v" : 1,        "key" : {            "accounttoken" : 1,    
        "date" : -1        },        "name" : "accounttoken_1_date_-1",    
    "ns" : "analytics_api.COPY_TABLE"    },*
    {
        "v" : 1,
        "key" : {
            "embeds" : -1
        },
        "name" : "embeds_-1",
        "ns" : "analytics_api.COPY_TABLE"
    },
    {
        "v" : 1,
        "key" : {
            "plays" : -1
        },
        "name" : "plays_-1",
        "ns" : "analytics_api.COPY_TABLE"
    },
    {
        "v" : 1,
        "key" : {
            "completes" : -1
        },
        "name" : "completes_-1",
        "ns" : "analytics_api.COPY_TABLE"
    }
]

What am I missing?


-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/32f12d78-bdf2-4db4-ad23-48829287e859%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?