Q:

is Logical to consider city or province as a new model in database design?

I am designing a new web application for our Business. Now I don't know what is better? I use MongoDB as database.
We have about 10 MongoDB model (schema) such as Leads & Contractors.
The Leads and Contractor Model must have a filed for city and a field as province.
We Want to show the leads of city 'A' for the contractors they work in city 'A' ;
As I explained leads and contractor model(schema) must have a filed for city.
I want to know what design is best practice and why?

Consider city and province as a filed in leads and contractors( a city field).(embed design).
Consider contractors and leads model as normalized. And create a new model(schema) for city and reference it in leads and contractors model
(reference design).

What is better and why?

A:

I can see no benefit in this case of creating a separate collection for the new fields. The big advantage of a NoSQL database is the ability to embed data in this way and rapidly query against it.
Imagine you want to query a contractor. If you did it with references, your database would have to first fetch the Contractor document, then go searching for the City document using the reference provided. Embedding removes the need for this, leading to much faster read times. The only time you might want to consider referencing would be if cities had their own central role in your application, in the way that a "BlogPost" document's author field might have a reference to a "User" document. But for simple address data like city and province I'm assuming this isn't the case.
Take a look at this link https://docs.mongodb.com/manual/core/data-model-design/ for a solid explanation of when to embed and when to split data into separate collections with references.

