Mongodb
-
O número da porta padrão de MYSQL: 3306
-
O número da porta padrão do Mongodb: 27017
Sistema de gerenciamento de banco de dados não relacional NOSQL
Usado para armazenamento de dados em larga escala (por exemplo: Google, Facebook) não requer um modelo fixo e pode ser dimensionado horizontalmente sem operações desnecessárias
O que é MongoDB?
Escrito em C ++, é um sistema de banco de dados de código aberto baseado no armazenamento de arquivos distribuídos.
No caso de alta carga, adicionar mais nós pode garantir o desempenho do servidor.
- Fornece soluções escalonáveis de armazenamento de dados de alto desempenho para aplicativos WEB
- Os dados do MongoDB são armazenados como um documento e a estrutura de dados é composta de pares chave-valor (chave => valor)
- Os documentos do MongoDB são semelhantes aos objetos JSON, e os valores dos campos podem incluir outros documentos, matrizes e matrizes de documentos
Análise de conceito
SQL | MongoDB | explicar |
---|---|---|
tabela | coleção | definir |
linha (uma linha, um registro) | documento | Documentação |
coluna | campo | Domínio (par de valor-chave) |
índice | índice | índice |
junções de mesa | A consulta de conexão de tabela não é compatível | |
chave primária | chave primária | Chave primária, mongoDB define automaticamente o campo _id como a chave primária |
base de dados
db. Bancos de dados diferentes são colocados em arquivos diferentes
show dbs pode exibir uma lista de todos os bancos de dados
nome de armazenamento de dados:
Não pode ser uma cadeia de caracteres (""), sem espaços,. ,, /, \ 0 (caracteres vazios) É melhor não usar chinês (podem ocorrer caracteres truncados em chinês), todos em minúsculas, até 64 bytes
Documentação:
Par de valores-chave, BSON
{”site":"xxxxx","age":25}
Serviço de banco de dados e cliente | ||
---|---|---|
MYSQL / Oracle | Mongod | |
Nota:
- Os pares de valores-chave no documento são ordenados
- Distinguir tipo e caso
- Não pode haver chaves duplicadas,
- Chave: string (utf-8), não pode conter caracteres vazios
- . $ Tem um significado especial, usado apenas em um ambiente específico
- A chave no início de _ é reservada (não estritamente necessária)
objeto
onject_id pode ser de qualquer tipo, geralmente o padrão é o tipo de objeto
O carimbo de data / hora criado é salvo em onject_id, portanto, não há necessidade de criar o carimbo de data / hora sozinho (timestap)
[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo anti-hotlinking. Recomenda-se salvar a imagem e carregá-la diretamente (img-IpPiTmmw-1611392732234) (C: \ Users \ jry \ AppData \ Roaming \ Typora \ typora-user-images \ image-20210123134431496.png)]
Obtenha a hora de criação do documento através da função getTimestap
Converter para a forma de string por str
encontro
[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo anti-leeching. Recomenda-se salvar a imagem e carregá-la diretamente (img-iqoE0EMq-1611392732240) (C: \ Users \ jry \ AppData \ Roaming \ Typora \ typora-user-images \ image-20210123134725981.png)]
[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo anti-hotlinking. Recomenda-se salvar a imagem e carregá-la diretamente (img-eBUxv13Z-1611392732243) (C: \ Users \ jry \ AppData \ Roaming \ Typora \ typora-user-images \ image-20210123134808410.png)]
Operações básicas do MongoDB
Um, crie um banco de dados
use xxx
Mas não há conteúdo no banco de dados, ele será exibido após a inserção do conteúdo
Dois, exclua o banco de dados
db.dropDatabase ()
Mude para outro banco de dados para ver se ele foi excluído
Três, crie uma coleção
- db.createCollection ("funcionário") cria uma coleção de funcionários
- db.mycol (nome da coleção) .insert ({"_ id": 01, "name": "马云"}) Insira diretamente, nenhuma coleção criará automaticamente uma coleção mycol
- mostrar coleções mostrar as coleções no banco de dados
- db ver o banco de dados atual
Quarto, exclua a coleção
db.tc (nome da coleção) .drop ()
Cinco, insira documentos na coleção
db.collection name.insert (document) Se _id existir, a exceção de chave primária será lançada e os dados atuais não serão salvos
db.collection name.save (document) Se _id existir, atualize os dados, se não existir, insira os dados
Insira um registro
var document name = db.collection name.insert ({inserir conteúdo do par de valores-chave})
Insira vários registros
nome do documento var = db.collection name.insertOne ({})
Insira vários documentos
var document name = db.collection name.insertMany ({})
Inserir matriz
1. Crie uma matriz primeiro
Sexto, a atualização do documento
db.collection name.updata (
{consulta — condição de consulta}
upsert – true: inserir se não existir, atualizar se existir, false: não atualizar
{$ set "{valor atualizado}} - por que atualizar o valor
multi: verdadeiro / falso — verdadeiro: atualiza todos os valores qualificados, falso: atualiza apenas o primeiro valor qualificado
)
Atualize um valor
db.employee.update ({“sexo”: “男”}, {$ set: {“idade”: 18}})
Todas as atualizações que atendem às condições
db.employee.update ({“sexo”: “男”}, {$ set: {“idade”: 18}}, {multi: verdadeiro} )
Sete, consulta de documento
1. Marca de condição
$ gt | > |
---|---|
$ gte | > = |
$ lt | < |
$ lte | <= |
$ fazer | ! = |
$ eq | 、 = |
Consultar registros com idade inferior a 19
Consultar registros com idade menor ou igual a 19
Verifique se a idade é inferior a 30 e o endereço é em Yan'an
db.employee.find ({“idade”: {$ lt: 20}, “endereço”: “延安”})
2. Condição E OU
E
db.employee.find ({' Erro de análise KaTeX: esperado'} ', obteve' EOF 'no final da entrada: e': [{"idade": { lt: 20}}, {“endereço”: “延安” }]})
'$ and' - e caráter relacional
[{Condição 1}, {Condição 2}]
OU
db.employee.find ({' Erro de análise KaTeX: esperado'} ', obteve' EOF 'no final da entrada: ou': [{"idade": {
lt: 20}}, {“endereço”: “延安” }]}))
db.employee.find ({" Erro de análise KaTeX: esperado '}', obteve 'EOF' no final da entrada:…": "女"}, {"idade": {
gt: 10}} ]})
Sexo é feminino, idade> 10 anos
Consulta no robo 3T
AND e OR combinados
Primeiro e depois ou
db.employee.find ({“sal”: { erro de análise KaTeX: esperado 'EOF', obtido '}' na posição 9: gt: 17000} ̲, ' ou': [{“sexo”: “女”}, {“Endereço”: “延安”}]})
db.employee.find ({“sal”: { erro de análise KaTeX: esperado 'EOF', obtido '}' na posição 9: gt: 19000} ̲, " ou": [{“sexo”: “女”}, {“Endereço”: “延安”}]})
db.getCollection('employee').find({"age":{$lt:30},"address":"郑州"})db.employee.find({"age":{$lt:30},"address":"郑州"})
//查询age小于30并且地址是郑州的document
db.employee.find({'$and':[{"age":{$lt:30}},{"address":"郑州"}]}) db.getCollection('employee').find({})
//查询age小于30或address是洛阳document
db.employee.find({'$or':[{"age":{$lt:30}},{"address":"洛阳"}]})
//查询sex为女或address是南京的document
db.employee.find({'$or':[{"sex":"女"},{"address":"南京"}]})
// (price>70 and (publish="机械工业出版社" or public="新疆儿童出版社"))
db.db_book.find({"price":{$gt:70},'$or':[{"publish":"机械工业出版社"},{"publish":"新疆儿童出版社"}]})
8. Consulta difusa
- /contente/
- / ^ O que começa com /
- / Termina com $ /
Aqueles com Jiang em seu nome
db.employee.find ({“nome”: / 蒋 /})
comece com a palavra cavalo no nome
db.employee.find ({“nome”: / ^ 马 /})
O nome que termina com a palavra de acordo com
db.employee.find ({“nome”: / 依 $ /})
Nove, exclua documentos
db.collection name.remove ({especificar as condições})
db.employee.remove({_id:1002}) 删除_id为1002的文档
db.collection name.remove (excluir condição, 1)
db.employee.remove({name:/诸/},1) 删除名字中有诸的,并且只删除一个文档
O nome que termina com a palavra de acordo com
db.employee.find ({“nome”: / 依 $ /})