Вы правы, вам придется создать дополнительный запрос самостоятельно.
Чтобы сделать это, создайте метод расширения, подобный этому
public static TDocument FetchDBRefAs<TDocument>(this MongoDBRef dbRef, IMongoDatabase database)
{
var collection = database.GetCollection<TDocument>(dbRef.CollectionName);
var query = Builders<TDocument>.Filter.Eq("_id", dbRef.Id);
return collection.Find(query).FirstOrDefault();
}
или Async edition.
public static async Task<TDocument> FetchDBRefAsAsync<TDocument>(this MongoDBRef dbRef, IMongoDatabase database)
{
var collection = database.GetCollection<TDocument>(dbRef.CollectionName);
var query = Builders<TDocument>.Filter.Eq("_id", dbRef.Id);
return await (await collection.FindAsync(query)).FirstOrDefaultAsync();
}
, который можно так назвать
var referencedEntity = entity.ReferencedEntity.FetchDBRefAs<T>(this.database))
Где сущность выглядит как
public class Entity
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string RandomProperty { get; set; }
public MongoDBRef ReferencedEntity { get; set; }
}