Spec-Zone.ru › MySQL Connectors 1.0

5.1 Создание документов

После создания коллекции она может хранить JSON-документы. Вы храните документы, передавая структуру данных JSON в функцию Collection.add(). Некоторые языки имеют прямую поддержку JSON-данных, другие используют эквивалентный синтаксис для представления этих данных. MySQL Connectors, реализующие X DevAPI, стремятся реализовать поддержку всех методов JSON, которые являются родными для конкретных языков Connectors.

Кроме того, в некоторых MySQL Connectors можно использовать универсальные объекты DbDoc. Наиболее удобный способ создания этих объектов — вызов метода Collection.newDoc(). DbDoc — это тип данных для представления JSON-документов, и способ его реализации не определяется X DevAPI. Языки, реализующие X DevAPI, могут использовать объектно-ориентированный подход с методами getter и setter или использовать стиль C-структур с общедоступными членами.

Для строго типизированных языков можно создавать файлы классов на основе определения структуры документа коллекций. Для этого можно использовать MySQL Shell.

Таблица 5.1 Различные типы объектов документов, поддерживаемые языки и их преимущества

Таблица 5.1 Различные типы объектов документов, поддерживаемые языки и их преимущества

Объекты документов

Поддерживаемые языки

Преимущества

Родной JSON

Языки сценариев (JavaScript, Python)

Простота использования

Эквивалентный синтаксис JSON

C# (Анонимные типы, ExpandoObject)

Простота использования

DbDoc

Все языки

Единый для всех языков

Сгенерированные классы документов

Строго типизированные языки (C#)

Естественное использование


Следующий пример демонстрирует различные способы вставки документов в коллекцию.

Код MySQL Shell JavaScript

// Create a new collection 'my_collection'
var myColl = db.createCollection('my_collection');

// Insert JSON data directly
myColl.add({_id: '8901', name: 'Mats', age: 21}).execute();

// Inserting several docs at once
myColl.add([ {_id: '8902', name: 'Lotte', age: 24},
  {_id: '8903', name: 'Vera', age: 39} ]).execute();

Код MySQL Shell Python

// Create a new collection 'my_collection'
var myColl = db.createCollection('my_collection');

// Insert JSON data directly
myColl.add({_id: '8901', name: 'Mats', age: 21}).execute();

// Inserting several docs at once
myColl.add([ {_id: '8902', name: 'Lotte', age: 24},
  {_id: '8903', name: 'Vera', age: 39} ]).execute();

Код Node.js JavaScript

// Create a new collection 'my_collection'
db.createCollection('my_collection').then(function (myColl) {

  // Add a document to insert
  var insert = myColl.add({ name: 'Mats', age: 21 });

  // Add multiple documents to insert
  insert.add([
    { name: 'Lotte', age: 24 },
    { name: 'Vera', age: 39 }
  ]);

  // Add one more document to insert
  var myDoc = {};
  myDoc.name = 'Jamie';
  myDoc.age = 47;
  insert.add(myDoc);

  // run the operation
  return insert.execute();
});

Код C#

// Create a new collection "my_collection"
var myColl = db.CreateCollection("my_collection");

// Insert JSON data directly
myColl.Add(new { name = "Mats", age = 21 }).Execute();

// Inserting several docs at once
myColl.Add(new[] {new { name = "Lotte", age = 24},
new { name = "Vera", age = 39} }).Execute();

// Insert Documents using DbDoc
var myDoc = new DbDoc();
myDoc.SetValue("name", "Jamie");
myDoc.SetValue("age", 47);
myColl.Add(myDoc).Execute();

//Fetch all docs
var docResult = myColl.Find().Execute();
var docs = docResult.FetchAll();

Код Python

# Create a new collection 'my_collection'
my_coll = my_schema.create_collection('my_collection')

# Insert JSON data directly
my_coll.add({'name': 'Mats', 'age': 21}).execute()

# Inserting several docs at once
my_coll.add([
    {'name': 'Lotte', 'age': 24},
    {'name': 'Vera', 'age': 39}
]).execute()

Код Java

// Create a new collection 'my_collection'
Collection coll = db.createCollection("my_collection");

// Insert JSON data directly
coll.add("{\"name\":\"Mats\", \"age\":21}").execute();

// Insert several documents at once
coll.add("{\"name\":\"Lotte\", \"age\":24}",
        "{\"name\":\"Vera\", \"age\":39}").execute();

// Insert Documents using DbDoc
DbDoc myDoc = new coll.newDoc();

myDoc.add("name", new JsonString().setValue("Jamie"));
myDoc.add("age", new JsonNumber().setValue("47"));
coll.add(myDoc).execute();

Код C++

// Create a new collection 'my_collection'
Collection myColl = db.createCollection("my_collection");

// Insert JSON data directly
myColl.add(R"({"name": "Mats", "age": 21})").execute();

// Inserting several docs at once
std::list<DbDoc> docs = {
  DbDoc(R"({"name": "Lotte", "age": 24})"),
  DbDoc(R"({"name": "Vera", "age": 39})")
};
myColl.add(docs).execute();

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/x-devapi-userguide-en/creating-documents.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API