squema do Mongo (incorporação vs referência) [duplicado]

Esta pergunta já tem uma resposta aqui:

elações no MongoDB: incorporação ou referênci 9 respostas

Vamos supor que estou projetando um serviço como o Foursquare que rastreia as entradas do usuário com base na localização do usuário. Estou usando o MongoDB como back-end.

A premissa aqui é que um usuário pode fazer check-in em um local, para que as coleções no esquema sejam assim:

db.places.find()
{ "_id" : ObjectId("4e6a5a58a43a59e451d69351"), "address" : { "street" : "2020 Lombard     St", "city" : "San Francisco", "state" : "CA" }, "latlong" : [ 37.800274, -122.434914 ], "name" : "Marina Sushi", "timezone" : "America/Los_Angeles" }
{ "_id" : ObjectId("4e6a59c3a43a59e451d69350"), "address" : { "street" : "246 Kearny St", "city" : "San Francisco", "state" : "CA" }, "latlong" : [ 37.79054, -122.40361 ], "name" : "Rickhouse", "timezone" : "America/Los_Angeles" }

db.users.find()
{ "_id" : ObjectId("4e936bc1da06d5e081544b8b"), "_class" : "com.gosociety.server.common.model.User", "email" : "[email protected]", "password" : "asdfasdf"}

ntão, nas coleções acima, temos locais e usuários. Um usuário pode "fazer check-in" em um local; portanto, quando um usuário faz check-in, manteremos um registro disso no banco de dados. Um check-in consistiria em: horário do check-in (UTC) e nota (150 caracteres) e se ele foi enviado para o feed do Facebook ou não (booleano).

om base na descrição, pude pensar em duas alternativas para o design de esquema no Mong

Crie uma coleção de check-in e use o ID de referência gerado pelo mongo para armazená-lo na coleção User e a coleção Places como check-ins [] em cada coleção. Dessa forma, seria fácil determinar estatísticas agregadas por usuário e por loca

Não crie uma coleção de check-in, mas atualize os dados do Local e do Usuário com as mesmas informações de check-i

Creio que li na documentação do mongo que a agregação deve ser usada diretamente se os dados agregados quase nunca forem exibidos sem o Objeto que contém as informações agregadas. Se seguirmos o método usado pelo aplicativo quadrangular, ele mostrará aos usuários o total de check-ins quando visualizarmos o perfil ou as estatísticas de check-in quando visualizarmos os detalhes do local.

Qualquer sugestão aqui seria muito apreciad

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion