RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 7. Работа с относительными таблицами и документами

После изучения, как работать с документами и относительными таблицами, этот раздел объясняет, как их объединить.

Это может быть выгодно, чтобы использовать документы для очень определенных задач и полагаться на таблицы для других задач. Или очень простой документ может перерасти модель документа и объединяться или перейти в более сильную базу данных. Таким образом, преимущества документов и таблиц могут быть объединены. Таблицы SQL вносят строго типизированную семантику значений, предсказуемое и оптимизированное хранение. Документы вносят гибкость типа, гибкость схемы и нескалярные типы.

7.1. Коллекции как относительные таблицы

Запросы, которые стремятся снабдить стандартные столбцы SQL документами, могут конвертировать коллекцию к таблице. В этом случае коллекция может быть принесена как объект таблицы функцией Schema.getCollectionAsTable(). С этого момента она рассматривается как таблица. К значениям документа можно получить доступ в операциях CRUD SQL, используя следующий синтаксис:

doc->'$.field'

doc->'$.field' используется, чтобы получить доступ к высокоуровневым областям документа. Более сложные пути также могут быть определены.

doc->'$.some.field.like[3].this'

Как только коллекция была получена как таблица через Schema.getCollectionAsTable(), все операции SQL CRUD могут использоваться. Используя синтаксис для доступа к документу, можно выбрать данные из документов коллекции и дополнительных столбцов SQL.

Следующие примеры показывают, как вставить последовательность документа JSON в поле doc.

MySQL Shell JavaScript Code

// Get the customers collection as a table
var customers = db.getCollectionAsTable('customers');
customers.insert('doc').values('{"_id":"001", "name": "Ana", "last_name": "Silva"}').execute();

// Now do a find operation to retrieve the inserted document
var result = customers.select(["doc->'$.name'", "doc->'$.last_name'"]).where("doc->'$._id' = '001'").execute();
var record = result.fetchOne();
print ("Name : "+ record[0]);
print ("Last Name : "+ record[1]);

MySQL Shell Python Code

# Get the customers collection as a table
customers = db.get_collection_as_table('customers')
customers.insert('doc').values('{"_id":"001", "name": "Ana",
                                 "last_name": "Silva"}').execute()

# Now do a find operation to retrieve the inserted document
result = customers.select(["doc->'$.name'",
                           "doc->'$.last_name'"]).
                           where("doc->'$._id' = '001'").execute()
record = result.fetch_one()
print("Name : %s\n"% record[0])
print("Last Name : %s\n"% record[1])

Node.js JavaScript Code

// Get the customers collection as a table
var customers = db.getCollectionAsTable('customers');
customers.insert('doc').values('{"_id":"001", "name": "Ana"}').execute();

C# Code

// Get the customers collection as a table
var customers = db.GetCollectionAsTable("customers");
customers.Insert("doc").Values("{ \"_id\": 1, \"name\": \"Ana\" }").Execute();

Python Code

# Get the customers collection as a table
customers = db.get_collection_as_table("customers")
customers.insert('doc').values({'_id':'001', 'name': 'Ana', 'last_name': 'Silva'}).execute()

# Now do a find operation to retrieve the inserted document
result = customers.select(["doc->'$.name'", "doc->'$.last_name'"]).where("doc->'$._id' = '001'").execute()
record = result.fetch_one()
print('Name : {0}'.format(record[0]))
print('Last Name : {0}'.format(record[1]))

Java Code

// Get the customers collection as a table
Table customers = db.getCollectionAsTable("customers");
customers.insert("doc").values("{\"name\": \"Ana\"}").execute();

C++ Code

// Get the customers collection as a table
Table customers = db.getCollectionAsTable("customers");
customers.insert("doc").values(R"({"_id":"001", "name": "Ana",
                                "last_name": "Silva"})").execute();

// Now do a find operation to retrieve the inserted document
RowResult result = customers.select("doc->'$.name'",
                                    "doc->'$.last_name'").
                             where("doc->'$._id' = '001'").execute();
Row record = result.fetchOne();
cout << "Name : " << record[0] << endl;
cout << "Last Name : " << record[1] << endl;

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru