0

I need to achieve such collection structure:

{
    "_id" : "36JaTS8N9uJDHabaq",
    "pages" : {
        1 : {
            "field1" : "value1",
            "field2" : "value2"
        },
        ...
    }
}

Everything is fine, when I'm doing the following:

Collection.insert({
    "pages": {
        1: {
            "field1" : "value1",
            "field2" : "value2"
        }
    }
})

But when I'm trying to use the variable containing the number instead of number itself, like:

var number = 1;
Collection.insert({
    "pages": {
        number: {
            "field1" : "value1",
            "field2" : "value2"
        }
    }
})

I receive not the result I want (there is a variable name where number should be):

{
    "_id" : "SjMotZHrtXviuoyqv",
    "pages" : {
        "number" : {
            "field1" : "value1",
            "field2" : "value2"
        }
    }
}

What is the right way to do what I'm trying to achieve?

Thanks in advance!

eawer
  • 1,398
  • 3
  • 13
  • 25

2 Answers2

3

You can try something like this :

var doc={
    pages:{}
};

var number="1";
doc.pages[number]={
    "field1":"value1",
    "field2":"value2"
};

Collection.insert(doc);
saimeunt
  • 22,666
  • 2
  • 56
  • 61
2

You can't use variables as keys in object literals in javascript. See this answer.

var number = 1;
var pages = {};
pages[number] = {f1: 'v1', f2: 'v2'};
Collection.insert({pages: pages});
Community
  • 1
  • 1
David Weldon
  • 63,632
  • 11
  • 148
  • 146