Использование MergJSON для перемещения данных из сетки данных в базу данных Mongo

После того, как я успешно реализовал извлечение документов с моего локального сервера mongo, я начал пытаться наоборот, отправляя данные, хранящиеся в сетке данных (DG), на сервер, поэтому я создал карту с:

  • DG (DG_02) с двумя столбцами, _id и Nombre, поле (E),
  • скрипт с обработчиком mouseup,

тот:

put the dgData of DG_02 into pArray2

puts the 5th element of pArray2,into pArray, 

(Я просто хочу попробовать это только с одним элементом на данный момент)

sets pForceRootType,pPretty parameters for the MergJSON function

вызвать функцию ArrayToJSON

put tJSON in fiel "E" to see what the function is returning

Создайте строку для использования с командой оболочки

put the result in rmongo to see the server answer

Весь сценарий

on mouseUp

 local dbText
 put the dgData of grp "DG_02" into  pArray2
 put pArray2[5] into pArray   <-- Only the 5th element of the array
 put "string" into tipo
 put "false" into bonito
 put ArrayToJSON(pArray, tipo, bonito) into tJSON
 put tJSON into fld "E"
 put "db.nueva.insert("& tJSON & ");" into dbText

 put shell("C:\mongodb\bin\mongo.exe --eval" && "'" & dbText & "'" ) into rmongo

 put rmongo

end mouseUp

Вот мои наблюдения при выполнении скрипта, изменяющего параметр pForceRootType для функции:

Когда типо установлен в поле объекта "E", получает: {"Nombre":"Sofia","_id":1012}

Когда для типо установлено значение String, поле "E" получает: {"Nombre":"Sofia","_id":"001012"}

В обоих случаях (типо = строка или типо = объект) rmongo покажите это в сообщении:

MongoDB shell version: 2.2.7

connecting to: test

db.nueva.insert({Nombre:Sofia,_id:001012});

Документ не вставлен.

При попытке вставки непосредственно в оболочке я вижу, что для успешной вставки строковые значения должны быть заключены в кавычки, но (если я не ошибаюсь в своих наблюдениях) JSON, возвращаемый функцией, не заключает в кавычки строки .

Я буду признателен за ваше руководство, заранее спасибо, Хавьер.


person Javier    schedule 22.03.2014    source источник


Ответы (1)


JSON, возвращаемый ArrayToJSON, имеет соответствующие кавычки, как вы можете видеть в тексте поля «E».

Я думаю, вам нужно экранировать строки для вызова оболочки, поэтому попробуйте:

replace quote with "^"&quote in tJSON

Конечно, тогда уже небезопасно иметь кавычки в любой из ваших строк.

person Monte Goulding    schedule 22.03.2014
comment
Просто хочу поблагодарить Ханнеса за редактирование моего поста. Я постараюсь более тщательно оформлять свои посты. Монте, спасибо за помощь. - person Javier; 23.03.2014
comment
Пожалуйста, могу я попросить вас добавить объяснение, для чего нужны переменные? - person z--; 23.03.2014
comment
Hannes, переменные bonito и tipo, являются аргументами для функции MergJSON, которая возвращает JSON из массива. Вы спрашиваете, для чего они? - person Javier; 24.03.2014