Я новичок в 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); });
Доменным объектом является «Voyage».В этом простом примере он состоит из сложного типа «Расписание» (с датой начала и конца) и VoyageNumber (с полем идентификатора строки).«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.