Memahami operasi titik

Selesai

Pustaka Microsoft.Azure.Cosmos menyertakan dukungan kelas satu untuk generik dalam bahasa C#, menjadikannya penting bagi Anda, sebagai pengembang, untuk memikirkan bagaimana Anda ingin mewakili apa yang berinteraksi dengan Anda dalam kontainer Anda.

Pada tingkat paling dasar, Anda dapat membuat kelas C# yang mewakili item dalam kontainer Anda yang, minimal, berisi dua anggota:

  • properti string bernama id dengan getter dan setter publik
  • properti string dengan nama yang sama dengan jalur kunci partisi Anda dengan getter dan setter publik
public class item
{
    public string id { get; set; }

    public string partitionKey { get; set; }
}

Anda dapat menyertakan banyak koleksi anggota lain dari jenis lain. Anda bahkan dapat memiliki anggota lain dari jenis kompleks yang berbeda, seperti kelas lain.

public decimal money { get; set;}

public bool boolean { get; set; }

public string[] set { get; set; }

public double numbers { get; set; }

public int moreNumbers  { get; set; }

public ComplexClass sophisticated { get; set;}

public List<ComplexType> oneToMany  { get; set; }

Mari kita buat skenario fiksi untuk sisa modul ini. Kami memiliki kelas Produk dengan lima anggota untuk id unik, nama produk, pengidentifikasi kategori unik, harga, dan kumpulan tag. Pengidentifikasi kategori adalah jalur kunci partisi untuk kontainer.

public class Product
{
    public string id { get; set; }

    public string name { get; set; }

    public string categoryId { get; set; }

    public double price { get; set; }

    public string[] tags { get; set; }
}

Penerapan ini adalah kelas C# yang sangat serbaguna yang dapat segera dipilih dan digunakan oleh pengembang mana pun. Misalkan, untuk alasan apa pun, Anda perlu mengubah nama properti agar sesuai dengan kebutuhan bisnis Anda. Dalam hal ini, Anda dapat menggunakan atribut properti untuk memisahkan nama properti yang Anda gunakan dalam kode C# dari nama properti yang digunakan di JSON dan, berlaku, di Azure Cosmos DB untuk NoSQL. Dalam contoh ini, Anda dapat menggunakan nama InternalId dalam kode C# dan masih menggunakan id pengidentifikasi di JSON dan Azure Cosmos DB untuk NoSQL.

[JsonProperty(PropertyName = "id")]
public string InternalId { get; set; }

Petunjuk / Saran

Jika Anda memiliki aplikasi yang sudah ada dengan nama anggota C# yang tidak dapat Anda ubah, atribut properti adalah cara untuk menggunakan kembali jenis tanpa menimbulkan risiko mengubah kode yang ada dengan cara yang signifikan atau menimbulkan utang teknis.

Pustaka azure-cosmos menyediakan dukungan yang kuat untuk pemodelan dan berinteraksi dengan item dalam kontainer Azure Cosmos DB. Sebagai pengembang Python, penting untuk menyusun definisi item Anda dengan hati-hati untuk selaras dengan persyaratan database dan kasus penggunaan aplikasi Anda.

Minimal, setiap item dalam kontainer harus menyertakan dua atribut:

  • Atribut string bernama id, yang bertindak sebagai pengidentifikasi unik untuk item.
  • Atribut string yang sesuai dengan kunci partisi jalur kontainer.

Berikut adalah contoh kelas Python yang mewakili struktur item minimal:

class Item:
    def __init__(self, id: str, partition_key: str):
        self.id = id
        self.partition_key = partition_key

Anda dapat meningkatkan kelas ini dengan menambahkan lebih banyak atribut dari berbagai jenis, termasuk jenis dasar seperti string dan angka, atau jenis kompleks seperti objek dan daftar berlapis.

class Item:
    def __init__(
        self,
        id: str,
        partition_key: str,
        money: float,
        boolean: bool,
        tags: list[str],
        numbers: float,
        more_numbers: int,
        sophisticated: dict,
        one_to_many: list[dict]
    ):
        self.id = id
        self.partition_key = partition_key
        self.money = money
        self.boolean = boolean
        self.tags = tags
        self.numbers = numbers
        self.more_numbers = more_numbers
        self.sophisticated = sophisticated
        self.one_to_many = one_to_many

Contoh Skenario: Memodelkan Produk

Mari kita gunakan skenario fiksi untuk sisa modul ini. Anda perlu membuat kelas Produk untuk mewakili produk dalam inventori Anda. Setiap produk meliputi:

  • id unik.
  • Nama produk.
  • categoryId sebagai kunci partisi .
  • Harga produk.
  • Daftar tag untuk kategorisasi.

Berikut adalah tampilan kelas di Python:

class Product:
    def __init__(self, id: str, name: str, category_id: str, price: float, tags: list[str]):
        self.id = id
        self.name = name
        self.category_id = category_id  # Partition key
        self.price = price
        self.tags = tags

Implementasi ini fleksibel dan mudah digunakan untuk berbagai operasi dalam aplikasi Anda. Jika, karena alasan apa pun, Anda perlu menyesuaikan nama atribut agar sesuai dengan persyaratan bisnis Anda, Anda dapat menggunakan teknik serialisasi untuk memetakan nama atribut di Python ke nama properti di JSON.

Misalnya, Anda ingin menggunakan nama internal_id dalam kode Python Anda saat masih menggunakan id sebagai nama properti JSON:

class Product:
    def __init__(self, internal_id: str, name: str, category_id: str, price: float, tags: list[str]):
        self.internal_id = internal_id
        self.name = name
        self.category_id = category_id  # Partition key
        self.price = price
        self.tags = tags

    def to_dict(self):
        return {
            "id": self.internal_id,  # Map internal_id to id
            "name": self.name,
            "categoryId": self.category_id,
            "price": self.price,
            "tags": self.tags,
        }

Nota

Jika Anda bekerja dengan kelas Python yang ada yang tidak dapat dimodifikasi, pertimbangkan untuk menggunakan metode pembantu seperti to_dict() untuk mengonversi objek ke dalam format yang diharapkan oleh Azure Cosmos DB untuk NoSQL. Ini memungkinkan Anda untuk menggunakan kembali jenis yang ada sambil menghindari utang teknis.

Dengan teknik pemodelan dasar ini, Anda dapat memastikan bahwa aplikasi Python Anda berinteraksi secara efektif dengan Azure Cosmos DB untuk NoSQL.

Pustaka @azure/cosmos menyediakan dukungan yang kuat untuk pemodelan dan berinteraksi dengan item dalam kontainer Azure Cosmos DB. Sebagai pengembang JavaScript, penting untuk menyusun definisi item Anda dengan hati-hati agar selaras dengan persyaratan database dan kasus penggunaan aplikasi Anda.

Minimal, setiap item dalam kontainer harus menyertakan dua properti:

  • Properti string bernama id , yang bertindak sebagai pengidentifikasi unik untuk item.
  • Properti string yang sesuai dengan kunci partisi jalur kontainer.

Berikut adalah contoh kelas JavaScript yang mewakili struktur item minimal:

class Item {
    constructor(id, partitionKey) {
        this.id = id;
        this.partitionKey = partitionKey;
    }
}

Anda dapat meningkatkan kelas ini dengan menambahkan lebih banyak properti dari berbagai jenis, termasuk jenis dasar seperti string dan angka, atau jenis kompleks seperti objek dan array berlapis.

class Item {
    constructor(id, partitionKey, money, boolean, tags, numbers, moreNumbers, sophisticated, oneToMany) {
        this.id = id;
        this.partitionKey = partitionKey;
        this.money = money;
        this.boolean = boolean;
        this.tags = tags;
        this.numbers = numbers;
        this.moreNumbers = moreNumbers;
        this.sophisticated = sophisticated;
        this.oneToMany = oneToMany;
    }
}

Contoh Skenario: Memodelkan Produk

Mari kita gunakan skenario fiksi untuk sisa modul ini. Anda perlu membuat kelas Produk untuk mewakili produk dalam inventori Anda. Setiap produk meliputi:

  • id unik.
  • Nama produk.
  • categoryId sebagai kunci partisi .
  • Harga produk.
  • Array tag untuk kategorisasi.

Berikut tampilan kelas di JavaScript:

class Product {
    constructor(id, name, categoryId, price, tags) {
        this.id = id;
        this.name = name;
        this.categoryId = categoryId; // Partition key
        this.price = price;
        this.tags = tags;
    }
}

Implementasi ini fleksibel dan mudah digunakan untuk berbagai operasi dalam aplikasi Anda. Jika, karena alasan apa pun, Anda perlu menyesuaikan nama properti agar sesuai dengan persyaratan bisnis Anda, Anda dapat menggunakan teknik serialisasi untuk memetakan nama properti di JavaScript ke nama properti di JSON.

Misalnya, Anda ingin menggunakan nama internalId dalam kode JavaScript Anda saat masih menggunakan id sebagai nama properti JSON:

class Product {
    constructor(internalId, name, categoryId, price, tags) {
        this.internalId = internalId;
        this.name = name;
        this.categoryId = categoryId; // Partition key
        this.price = price;
        this.tags = tags;
    }

    toJSON() {
        return {
            id: this.internalId, // Map internalId to id
            name: this.name,
            categoryId: this.categoryId,
            price: this.price,
            tags: this.tags,
        };
    }
}

Nota

Jika Anda bekerja dengan kelas JavaScript yang sudah ada yang tidak dapat dimodifikasi, pertimbangkan untuk menggunakan metode seperti toJSON() untuk mengonversi objek ke dalam format yang diharapkan oleh Azure Cosmos DB untuk NoSQL. Ini memungkinkan Anda untuk menggunakan kembali jenis yang ada sambil menghindari utang teknis.

Dengan teknik pemodelan dasar ini, Anda dapat memastikan bahwa aplikasi JavaScript Anda berinteraksi secara efektif dengan Azure Cosmos DB for NoSQL.