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 respostasVamos 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