MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consulta do MongoDB em campos preenchidos


A resposta é mudar seu esquema.

Você caiu na armadilha que muitos desenvolvedores têm antes de entrar no desenvolvimento de banco de dados de documentos a partir de um histórico de uso de bancos de dados relacionais:MongoDB não é um banco de dados relacional e não deve ser tratado como um.

Você precisa parar de pensar em chaves estrangeiras e dados perfeitamente normalizados e, em vez disso, manter cada documento o mais autocontido possível, pensando na melhor forma de incorporar dados associados relevantes em seus documentos.

Isso não significa que você não pode manter associações também. Pode significar uma estrutura como esta, onde você incorpora apenas os detalhes necessários e consulta o registro completo quando necessário:
var activitySchema = new mongoose.Schema({
  event: {
    _id: { type: ObjectId, ref: "Event" },
    name: String,
    private: String
  },

  // ... other fields
});

Repensar sua estratégia de incorporação irá muito simplifique suas consultas e mantenha a contagem de consultas no mínimo. populate aumentará sua contagem rapidamente e, à medida que seu conjunto de dados crescer, isso provavelmente se tornará um problema.