Um banco de dados orientado a documentos, ou armazenamento por documentos (document store), é um modelo de banco de dados projetado para armazenar, recuperar e gerenciar informações orientadas a documentos, também conhecidas como dados semi-estruturados. Bancos de dados orientados a documentos são uma das principais categorias de bancos de dados NoSQL e a popularidade do termo "banco de dados orientado a documentos" tem crescido[1] com o uso do termo NoSQL propriamente dito. Bancos de dados XML são uma subclasse de bancos de dados orientados a documentos que são otimizados para trabalhar com documentos XML. Bancos de dados de grafos são similares, mas adicionam outra camada, o relacionamento, que permite que eles liguem documentos para percorrimento rápido.
Bancos de dados orientados a documentos são inerentemente uma subclasse do armazenamento chave-valor, outro conceito de banco de dados NoSQL. A diferença está na maneira que os dados são processados, pois em um armazenamento chave-valor, os dados são considerados como sendo inerentemente opacos ao banco de dados, enquanto que um sistema orientado a documentos depende da estrutura interna no documento afim de extrair metadados que o mecanismo do banco de dados utiliza para otimização adicional. Apesar da diferença ser geralmente discutível, devido às ferramentas nos sistemas, conceitualmente o armazenamento por documentos é projetado para oferecer uma experiência mais rica com técnicas de programação modernas.
Bancos de dados de documentos contrastam fortemente com o banco de dados relacional (RDB). Bancos de dados relacionais geralmente armazenam dados em tabelas separadas que são definidas pelo programador, e um único objeto pode estar espalhado através de várias tabelas. Bancos de dados de documento armazenam todas as informações para um determinado objeto em uma única instância no banco de dados e cada objeto armazenado pode ser diferente de todos os outros. Isto torna o mapeamento de objetos no banco de dados uma tarefa simples, normalmente eliminando qualquer coisa similar a um mapeamento objeto-relacional. Isto faz com que os armazenamentos por documentos sejam atrativos para programação de aplicações web, que estão sujeitas a mudanças contínuas no local, e onde velocidade de desenvolvimento é uma questão importante.