MongoDB學習(翻譯7)

2021-09-08 07:05:30 字數 1999 閱讀 4800

接上篇

手動構造類對映時您可以簡單地通過不將字段或屬性新增到類對映。當使用自動對映你需要指定應忽略該字段或屬性的方法。可以使用屬性編寫如下編寫:

public

class

myclass

}

或使用初始化**而不屬性:

bsonclassmap.registerclassmap(cm =>);

預設為空的值序列化到 bson 文件時對應的 bson欄位null。替代方法是序列化時忽略掉具有null值的字段或屬性。要指定此使用如下屬性編寫:

public

class

myclass

}

或使用初始化**而不是屬性:

bsonclassmap.registerclassmap(cm =>);

您可以指定乙個欄位或屬性的預設值,如下所示:

public

class

myclass

}

或使用初始化**而不使用屬性:

bsonclassmap.registerclassmap(cm =>);

您還可以控制是否將預設值序列化(預設值為是)。不序列化屬性預設值做法:

public

class

myclass

}

或使用初始化**而不使用屬性:

bsonclassmap.registerclassmap(cm =>);

有時決定是否序列化乙個成員比僅僅決定控制或者預設值是否序列化要複雜的多。您可以編寫用於確定是否應序列化的方法。通常的方法成員xyz被命名為shouldserializexyz。如果您按照此命名約定然後自動對映將自動檢測到方法和使用它。例如:

public

class

employee

[bsondatetimeoptions(dateonly = true

)]

public datetime dateofbirth

public

bool

shouldserializedateofbirth()

}

或使用初始化**而不是命名約定:

bsonclassmap.registerclassmap(cm =>);

通常情況下,反序列化程式不關心將要被反序列化的文件是否不包含匹配的元素。不具有匹配元素的成員只是簡單的獲得分配給它們的預設值。

如果你想要使文件中的元素必須需要,您可以像這樣標記單個欄位或屬性:

public

class

myclass

[bsonrequired]

public

string x

}

改為使用初始化**的方法:

bsonclassmap.registerclassmap(cm =>);

警告:

在反序列化時將會丟擲乙個異常,這種狀態並不適用於序列化.

有時需要的序列化程式,而不是使用bson庫。可以通過下面幾種方法來達到此目的:

public

class

myclass

[bsonserializer(

typeof

(mycustomstringserializer))]

public

string x

}

改為使用初始化**的方式:

bsonclassmap.registerclassmap(cm =>);

待續。。。。。

MongoDB學習(翻譯5)

本文件基於c 官方驅動1.8版本。本節c 驅動教程談論c 類到bson物件的序列化和反序列化。序列化是對映乙個物件到可儲存到mongodb庫中bson物件的過程,反序列化由bson文件重建物件的逆過程。因此,序列化過程通常被稱為 物件對映 序列化使用bson庫處理。bson庫擁有乙個可擴充套件的序列...

小白學習Centos7安裝mongodb

致少年 在mongodb3 6資料夾下建立 data 目錄和logs 目錄進入到 mongodb 安裝目錄的 bin目錄,建立 mongodb.conf 檔案vim opt mongodb3.6 bin mongodb.conf配置檔案如下 dbpath opt mongodb3.6 data 資料...

HGE教程翻譯(7)

成千上萬的野兔 這篇教程示範hge渲染多種混合模式。建立精靈 我們跳過所有的技術細節直接來到動作。首先建立並初始化一對精靈,用於 game objects 和背景。注意背景精靈是如何從小的 64x64 圖塊建立並在底部上色。htexture tex,bgtex hgesprite spr,bgspr...