MongoDB中的欄位型別Id

chy710發表於2015-07-31

眾所周知,在向MongoDB的集合中新增一條記錄時,系統會自動增加一個欄位名為"_id",型別為ObjectId的欄位,其值為24位字串,可以使用此值作為記錄的唯一標識。

專案中需要呼叫一個已存在的MongoDB,發現其每個collections都有一個欄位"Id",而其值就是自動生成的那個"_id",這樣就存在兩個型別相同值也相同的欄位,真是多此一舉。

List<mgdata> items = colMsg.FindAllAs<mgdata>().SetLimit(10).ToList<mgdata>();

 

當用MongoDB Driver獲取資料時,提示以下異常

 

MongoDB.Bson.BsonSerializationException: Member 'Id' of class 'yourproject' cannot use element name '_id' because it is already being used by member '_id'.

 

修改model如下後,可正常讀取。(通過繼承,讓"_id","Id"兩個屬性不要同時平行出現)

 

public class bsonItem
    {
        public BsonObjectId _id { getset; }
    }

public class mgdata:bsonItem
    {
        public BsonObjectId Id { getset; }
        public string name { getset; }
        public DateTime date { getset; }
    }

 

相關文章