我是新來的MongoDB,並想知道與註冊的BsonClassMaps查詢域對象。 考慮下面的映射:C#MongoDB查詢與BsonClassMaps
BsonClassMap.RegisterClassMap<VoyageNumber>(cm =>
{ cm.MapField<string>(p => p.Id); });
BsonClassMap.RegisterClassMap<Schedule>(cm =>
{ cm.MapField<DateTime>(p => p.EndDate); cm.MapField<DateTime>(p => p.StartDate); });
BsonClassMap.RegisterClassMap<Voyage>(cm =>
{ cm.MapIdField<VoyageNumber>(p => p.VoyageNumber); cm.MapField<Schedule>(p => p.Schedule); });
域實體是 「航程」。在這個簡單的例子中,它由一個複雜的類型「Schedule」(帶有開始日期和結束日期)和一個VoyageNumber(帶有一個字符串id字段)組成。 「VoyageNumber」是實體的標識符。
現在我可以插入一個新的航程只是罰款:
MongoCollection<Voyage> mongoVoyages = context.MyDB.GetCollection<Voyage>("Voyages");
mongoVoyages.Insert<Voyage>(voyage);
我可以檢索通過一個航程:
MongoCollection mongoVoyages = context.MyDB.GetCollection("Voyages");
BsonDocument result = mongoVoyages.FindOneAs<BsonDocument>();
BsonDocument sched = result["Schedule"].AsBsonDocument;
DateTime start = sched["StartDate"].AsDateTime;
//etc...
當然現在我想通過ID進行搜索的航行。我如何通過上面顯示的映射來實現這一點?我嘗試了這樣的事情,但失敗了:
Query.EQ("VoyageNumber", someStringID)
我使用官方的C#驅動程序1.0。
謝謝你,工作以及促進了我的面向文檔DB的理解。所以你說我不需要映射除IdField之外的其他字段? – hoetz 2011-04-10 14:59:36
@Malkier:不,你根本不需要映射。至少在你的例子中。我從文檔中添加了一些筆記來解決我的問題。 – 2011-04-10 16:34:21