-1
db.foo.remove();
var a10001 = Array(90,0,5,134);
var a10002 = Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107);
var a10003 = Array(202);

db.foo.insert({
a10001 : a10001,
a10002 : a10002,
a10003 : a10003
});

first two arrays a10001 a10002 are the same as inserted the third a10003 is not !

db.foo.find( {} , { "a10003" : 1} );

{ "_id" : ObjectId("534e031ad1844c26ea167205"), "a10003" : [    null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null,   null, null,     null,   null,   null,   null,   null,   null,   null,   null,   null ] }

but when I add one element to third array

var a10003 = Array(202,1);

it behaves well.

{ "_id" : ObjectId("534e0402d1844c26ea167206"), "a10003" : [  202,  1 ] }

Version:

mongod --version
db version v2.4.9
Wed Apr 16 06:02:33.649 git version: 52fe0d21959e32a5bdbecdc62057db386e4e029c
Raptor
  • 53,206
  • 45
  • 230
  • 366

2 Answers2

0

i think your syntax is not correct , As you can see here Create a JavaScript array containing 1...N. It means Array(202) create empty array with 202 as size.

         var foo = new Array(202);//create a 202 element array

You can try like this

        var foo = new Array();
        foo.push(202);
Community
  • 1
  • 1
Devesh
  • 4,500
  • 1
  • 17
  • 28
0

@Devesh is right. When you are trying to create an Array Object with single parameter x which is an integer(if it is a not an integer then it will create a array with that element, you can try with boolean or string) then it means that you are initializing an array of some length with undefined values.

And if you will use that array when inserting into a mongoDB collection then mongoDB will insert null values. See the commands I ran in mongo shell.

> var arr = new Array(1);
> arr
[ undefined ]
> arr.length
1


> var arr = new Array(5)
> arr.length
5
> arr
[ undefined, undefined, undefined, undefined, undefined ]

> var arr = new Array(5,3,4)
> arr.length
3
> arr
[ 5, 3, 4 ]

> var arr = new Array(5)
> arr
[ undefined, undefined, undefined, undefined, undefined ]

> db.testing.insert({arr:arr})
WriteResult({ "nInserted" : 1 })
> db.testing.find().pretty();
{
        "_id" : ObjectId("534e0f9fbdb7d435d4bc46d5"),
        "arr" : [
                null,
                null,
                null,
                null,
                null
        ]
}

> var arr = new Array(5,4,3,2,1)
> db.testing.insert({arr:arr})
WriteResult({ "nInserted" : 1 })
> db.testing.find().pretty();
{
        "_id" : ObjectId("534e0f9fbdb7d435d4bc46d5"),
        "arr" : [
                null,
                null,
                null,
                null,
                null
        ]
}
{
        "_id" : ObjectId("534e10c8bdb7d435d4bc46d6"),
        "arr" : [
                5,
                4,
                3,
                2,
                1
        ]
}

I hope it helps.

Other links from where you can take reference from http://docs.mongodb.org/manual/reference/operator/update-array/ http://docs.mongodb.org/manual/reference/method/db.collection.insert/

RajaM
  • 11
  • 1
  • 6