文件首頁
X DevAPI 使用者指南
下載本手冊
PDF (美國信紙) - 1.4Mb
PDF (A4) - 1.4Mb


X DevAPI 使用者指南  /  使用文件  /  建立文件

5.1 建立文件

建立集合後,即可儲存 JSON 文件。您可將 JSON 資料結構傳遞至 Collection.add() 函式來儲存文件。某些語言直接支援 JSON 資料,其他語言則具有代表該資料的等效語法。實作 X DevAPI 的 MySQL 連接器旨在實作對連接器特定語言原生的所有 JSON 方法的支援。

此外,在某些 MySQL 連接器中,可以使用泛型 DbDoc 物件。建立它們最方便的方法是呼叫 Collection.newDoc()DbDoc 是一種資料類型,用來表示 JSON 文件,X DevAPI 並未定義其如何實作。實作 X DevAPI 的語言可以自由採用具有 getter 和 setter 方法的物件導向方法,或使用具有公用成員的 C 結構樣式。

對於嚴格型別語言,可以根據集合的文件結構定義建立類別檔案。可以使用 MySQL Shell 來建立這些檔案。

表 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();