Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lazy loading in MongoDB with NoRM

I have a model similar to this: (simplified)

Question:

public class Question
{
    public string QuestionID { get; set; }

    public string Title { get; set; }
    public string Body { get; set; }

    public List<Answer> Answers { get; set; }
}

Answer:

public class Answer
{
    public string QuestionID { get; set; }
    public string Body { get; set; }
}

I intend to store the data in MongoDB, and would like to use NoRM with this.

My question is: Is lazy loading supported? Or can I set it up to do lazy-loading on the document store..?

So that requesting a Question, also retrieves the Answers..? (both will be "posts" stored in the same collection on MongoDB)

like image 545
Alex Avatar asked Dec 04 '22 10:12

Alex


1 Answers

OK, the concept of "Lazy Loading" is mostly foreign to a database like MongoDB. Take a look at your schema: Question has a List of Answers.

In an RDBMS the "lazy" part allows you to load "the list" separately from the original. There are actually two queries happening, you're just trying to delay the second query.

In MongoDB there's only one query happening. The Answers are embedded inside of the question, so your request for Questions automatically includes the list of Answers.

Please take a look at the NORM samples for a better example of this: http://normproject.org/samples

The basic point is that the structure you provided is no longer multiple tables. It's just one collection with embedded documents. So the concept of "Lazy Loading" is really unnecessary because you can't "Lazy Load" one query.

like image 117
Gates VP Avatar answered Dec 23 '22 13:12

Gates VP