Платформа 3V/Соединение с источником/Импорт через Mongo: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 37: Строка 37:
 
== Метод ImportWithAttributes ==
 
== Метод ImportWithAttributes ==
 
Импортирует коллекцию из БД монго в справочник, выбирая из документов указанные поля и записывая их в соответствующие атрибуты справочника.
 
Импортирует коллекцию из БД монго в справочник, выбирая из документов указанные поля и записывая их в соответствующие атрибуты справочника.
 +
Параметр метода, это JSON следующего вида:
 +
 +
<syntaxhighlight lang="JSON">
 +
{
 +
"connectionId": 18761,
 +
"dbName": "trv",
 +
"collectionName": "TestCollection",
 +
"parentId": 18760,
 +
"attributes": [
 +
{
 +
"name": "Last_name",
 +
"dataType": "String",
 +
"innerAttributePath": "field1"
 +
},
 +
{
 +
"name": "Birthday",
 +
"dataType": "DateTime",
 +
"innerAttributePath": "birthdayAsString.birthday"
 +
},
 +
{
 +
"name": "Element_of_array",
 +
"dataType": "String",
 +
"innerAttributePath": "field4[0].field1"
 +
}
 +
]
 +
}
 +
</syntaxhighlight>
 +
 +
Здесь '''connectionId''', '''dbName''', '''collectionName''' и '''parentId''' - имеют тот же смысл, что и параметры метода Import.
 +
 +
Далее идет перечень импортируемых атрибутов.
 +
 +
<syntaxhighlight lang="JSON">
 +
"attributes": [
 +
{
 +
"name": "Last_name",
 +
"dataType": "String",
 +
"innerAttributePath": "field1"
 +
},
 +
        ...
 +
    ]
 +
</syntaxhighlight>
 +
 +
'''name''' - это имя атрибута в создаваемом справочнике. Имя не должно сопадать с зарезервироваными именами для служебных атрибутов (id, name, code, parent_id и ord). Так же имя не может содержать пробелы.
 +
 +
'''dataType''' - тип данных создаваемого атрибута. Допустимые типы данных: String, Integer, Double, DateTime, Boolean.
 +
 +
'''innerAttributePath''' - путь к значению атрибута в структуре документов из загружаемой коллекции монго.
  
 
== Метод ImportWithAttributesBackground ==
 
== Метод ImportWithAttributesBackground ==

Версия 10:56, 7 октября 2020

Импорт справочников из БД Mongo

Для работы с монго желательно, помимо собственно платформы, установить какую-либо утилиту для подключения к серверам монго и просмотра их содержимого. Рекомендую пользоваться бесплатной MongoDB Compass (https://www.mongodb.com/try/download/compass).

Настройка соединения с монго

Создаем объект "Соединение с БД" в платформе. В json-редакторе созданного соединения прописываем строку соединения с монго.

Пример:

 {
   "dbType": "MongoDb",
   "connectionString": "mongodb://mongoadmin:mongoadmin@192.168.228.25:27017/?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false"
 }

Если в Compass подключение уже было настроено, то эту строку можно скопировать из настроек.
Пример настройки подключения в Compass:
Строка соединения в MongoDB Compass

Метод Import

Импортирует коллекцию из БД монго в справочник.
Параметры:
connectionId - идентификатор ранее настроенного соединения с монго.
dbName - имя базы данных монго (это имя можно посмотреть, например, в Compass, подключившись к нужному серверу, см. рисунок ниже).

Строка соединения в MongoDB Compass

collectionName - имя импортируемой коллекции (список коллекций в конкретной БД смотрим в Compass).

Имена коллекций в монго

parentId - идентификатор родительской папки в которой будет создан импортируемый справочник.

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

Метод Import (атрибуты по умолчанию)

Метод ImportWithAttributes

Импортирует коллекцию из БД монго в справочник, выбирая из документов указанные поля и записывая их в соответствующие атрибуты справочника. Параметр метода, это JSON следующего вида:

 {
	"connectionId": 18761,
	"dbName": "trv",
	"collectionName": "TestCollection",
	"parentId": 18760,
	"attributes": [
		{
			"name": "Last_name",
			"dataType": "String",
			"innerAttributePath": "field1"
		},
		{
			"name": "Birthday",
			"dataType": "DateTime",
			"innerAttributePath": "birthdayAsString.birthday"
		},
		{
			"name": "Element_of_array",
			"dataType": "String",
			"innerAttributePath": "field4[0].field1"
		}
	]
 }

Здесь connectionId, dbName, collectionName и parentId - имеют тот же смысл, что и параметры метода Import.

Далее идет перечень импортируемых атрибутов.

	"attributes": [
		{
			"name": "Last_name",
			"dataType": "String",
			"innerAttributePath": "field1"
		},
        ...
     ]

name - это имя атрибута в создаваемом справочнике. Имя не должно сопадать с зарезервироваными именами для служебных атрибутов (id, name, code, parent_id и ord). Так же имя не может содержать пробелы.

dataType - тип данных создаваемого атрибута. Допустимые типы данных: String, Integer, Double, DateTime, Boolean.

innerAttributePath - путь к значению атрибута в структуре документов из загружаемой коллекции монго.

Метод ImportWithAttributesBackground

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

Метод GetBackgroundImportStatus

Контроль статуса ранее запущеных фоновых задач импорта.

Метод Reload

Полная перезагрузка ранее загруженного из монго справочника. Необходимо иметь ввиду, что при полной перезагрузке идентификаторы элементов не сохраняются и будут присвоены элементам заново и в произвольном порядке.

Метод Update

Обновление ранее загруженного из монго справочника. При обновлении (в отличие от Reload), идентификаторы обновляемых элементов не изменяются.

Метод UpdateWithAttributes

Обновление ранее загруженного из монго справочника с одновременным добавлением в справочник новых атрибутов.