Lua-resty-mongol - table insertion

Hi list,

I’m currently moving into lua-resty-mongol, and I’m facing this issue:

local versions = {}
local t = {}
table.insert(t,{a = “aa”})
table.insert(t,{b = “bb”})
versions={{name=“dog”,container=“mycontainer”,tab= t}}

mongos> db.files.find({container:‘mycontainer’}).pretty()
{
“_id” : ObjectId(“4fbb710018b42f60c829ae87”),
“container” : “mycontainer”,
“tab” : [
undefined,
{
“a” : “aa”
},
{
“b” : “bb”
}
],
“name” : “dog”
}

Why is ther “undefined” field ?

Also, pushing new info to “tab” results in resetting “tab” into new
array of:
[
undefined,
{
“c” : “cc”
}
]

Did I do anything wrong or is this a bug ?

Pierre

to be more precise, issue can be only

reproduced when trying to
insert table of tables

On Tue, 22 May 2012 12:59:29 +0200, Pierre
wrote:

Hi list,

I’m currently moving into lua-resty-mongol, and
I’m facing this issue:

local versions = {}
local t = {}

table.insert(t,{a = “aa”})

table.insert(t,{b = “bb”})

versions={{name=“dog”,container=“mycontainer”,tab= t}}

mongos>
db.files.find({container:‘mycontainer’}).pretty()
{
“_id” :
ObjectId(“4fbb710018b42f60c829ae87”),
“container” : “mycontainer”,

“tab” : [

undefined,
{
“a” : “aa”
},
{
“b” : “bb”
}
],

“name” : “dog”

}

Why is ther “undefined” field ?

Also,
pushing new info to “tab” results in resetting “tab” into new array
of:
[
undefined,
{
“c” : “cc”
}
]

Did I do anything
wrong or is this a bug ?

Pierre


nginx mailing list

[email protected] [1]

nginx Info Page
[2]

Links:

I found this problem before, but I’m not sure how to modify it. The
reason is:

Lua table index is begin from 1, but array in mongodb is 0. So there
will be a
undefined element in mongodb array whose index is 0.

If we modify the driver to make index=index-1 when insert into mongodb
and
index=index+1 when read from mongodb, the “undefined” will be
eliminated.
We will found that the tab[1]=aa inserted into mongodb will be tab[0]=aa
actual
stored in mongodb, and it’s conflict with other language drivers.

Posted at Nginx Forum: