stijnsanders / TMongoWire

Delphi MongoDB driver
MIT License
102 stars 37 forks source link

add object to array #42

Open DDAGitHub opened 7 years ago

DDAGitHub commented 7 years ago

Hello. Help, please, I can't to find the solution.

There is the object { "_id" : "id1", "data" : [ { "jobs" : [ { "title" : "t1", "type" : "tt1", "category" : "c1" }, { "title" : "t2", "type" : "tt2", "category" : "c2" } ] } ] } I want to add the third job to the jobs array. doc:=FMongoWire.Get(mwCollectionPersons,dSelector); d0:= JSON(doc['data'][0]); jobs_ru:= d0['jobs']; n:= VarArrayHighBound(jobs_ru,1)+1; VarArrayRedim(jobs_ru, n+1); jobs_ru[n]:=JSON(['title','t3','type','tt3']);

fMongoWire.Update(mwCollectionPersons,dSelector,doc); I have found that this code does not increase length of jobs array:

Could you posible to help me? With best regards, Dmitry.

stijnsanders commented 7 years ago

I think you probably should look into the $push operator instead of posting a full update of the document.

fMongoWire.Update(mxCollectionPersons,dSelector,JSON(['$push{','data[0].jobs{','title','t3','type','tt3','}}']));
DDAGitHub commented 7 years ago

Thank you, I`ll try.

stijnsanders commented 7 years ago

Having a look at this one again, it may be 'data.0.jobs{' instead of 'data[0].jobs{'

Skullwing commented 4 years ago

Did you solve this? Nothing of the options above work for me, I can't even read data out of an array. Help pls, do you have an example on how to read data from an array?