MongoDB – Importação/Exportação e Insert/Save
Antes
de aprendermos a fazer pesquisas no MongoDB, primeiramente iremos
aprender os comando de exportação e importação para que você já
possa importar alguns dados e comece a brincar com eles durante as
consultas.
Exportação
Na
exportação os dados da collection são salvos em um arquivo JSON.
mongoexport
--db nome_do_database --collection nome_da_collection --out
arquivo.json
Importação
Os
dados salvos em um JSON são importados para uma collection do Mongo.
mongoimport
--db nome_do_database --collection nome_da_collection --drop --file
arquivo.json
Nesse
comando o --drop apaga a collection do database que você
selecionou caso ela exista, para que possa começar do zero.
Observação: Os comandos de importação e exportação devem ser feitos no terminal normalmente e com o servidor mongo ligado. A importação e exportação não é feita no cliente mongo como você pode estar pensando...
Observação: Os comandos de importação e exportação devem ser feitos no terminal normalmente e com o servidor mongo ligado. A importação e exportação não é feita no cliente mongo como você pode estar pensando...
No
GitHub tem alguns JSON que você importar e usa para testar os comandos.
Nesse
post iremos aprender sobre as formas de inserirmos dados no Mongo.
Vamos
lá!
No
Mongo existem duas formas de inserirmos os dados, são elas
db.collection.insert(documento)
ou
db.collection.save(documento)
Primeiro
iremos criar em uma variável com os dados da pessoa que iremos
inserir na collection pessoa da database agenda que foi mostrado no
post anterior. Para criarmos essa variável e inserir os dados nela,
podemos usar comandos JavaScript já que o Mongo aceita isso, um
exemplo é que se você fizer 2 + 2 no terminal do Mongo, ele executa
e te da o resultado. Veja como é simples criar uma variável para
inserirmos no na nossa collection:
var
pessoa = {
...
'name': 'Barry Allen',
...
'phones': [{'carrier': 'Claro', 'number': 912345678}]
...
}
Phones
será uma array onde poderemos colocar mais de um número, caso a
pessoa possua, por isso os [ ] (colchetes).
E dentro desses colchetes podemos colocar vários objetos, cada
objeto dentro de { } (chaves),
lembrando que um objeto pode possui vários atributos. Como no
exemplo mostrado os nosso objeto possui os atributos carrier
e number. Agora outro
exemplo onde phones
possui dos objetos:
var
people = {
"name": "Hal Jordan",
"phones": [
{
"carrier": "Claro",
"number": 987654321
},
{
"carrier": "Tim",
"number": 956781234
}
]
}
Fácil,
né!?
Temos
dois contatos como exemplo. Vamos inserir usando o insert.
Primeiro:
db.pessoa.insert(pessoa)
depois:
db.pessoa.insert(people)
Para
cada inserção deverá aparecer algo semelhante a isso (estou usando
o MongoHack)...
Inserted
1 record(s) in 3ms
WriteResult({
"nInserted": 1
})
Essa
mensagem mostra o tempo levado para fazer a inserção e diz quantos
documentos foram inseridos.
Agora
o save. Pode ser
estranho ter dois comandos para inserir objetos no nosso banco, mas
existe uma diferença entre eles, para poderemos ver essa diferença
precisaremos usar o comando findOne(). Os comando de pesquisa
explicarei mais a fundo no próximo post e
a diferença do save
você verá na prática.
Continuando…
Vamos
criar uma variável que será nossa query, essa variável irá conter
o que queremos pesquisar no banco de dados. Iremos pesquisar o nome
'Barry Allen', para
isso nossa variável precisara ter o atributo que irá verificar (no
caso o name) e o nome.
Vejá como fica…
var
query = {'name': 'Barry Allen'}
Agora
iremos usar uma outra variável para receber o valor da pesquisa para
a nossa query…
var
auxiliar = db.pessoa.findOne(query)
Um
spoiler do próximo post: db.collection.find() ou
db.collection.find({}) exibi todos os dados da collection, lembre se
que no nosso caso a nossa coleção é pessoa.
A
variável auxiliar irá receber de findOne()
o resultado da busca para o nome Barry Allen… Se depois desse
comando, você digitar auxiliar
e der ENTER, você verá isso…
{
"_id":
ObjectId("567479879a3b551315ed44c8"),
"name": "Barry
Allen",
"phones": [
{
"carrier": "Claro",
"number": 912345678
}
]
}
Fácil,
fácil. Reparou no atributo “_id”?
Ao inserirmos um objeto no banco, automaticamente é criado um
identificador
desse objeto, é a forma de diferenciarmos cada objeto. Podemos até
ter dois objetos com os mesmo dados, mas ele serão diferentes, pois
possuirão id's
diferentes.
Agora
iremos alternar nossa variável auxiliar, adicionando um atributo, o
nickname (apelido) que receberá The Flash.
auxiliar.nickname
= 'The Flash'
Você
pode executar auxiliar, para ver como ficou com a modificação. Veja
que essa modificação foi feita apenas na variável, para que seja
inserida no banco de dados e atualizar o contato que tem o nome do
Barry Allen, usaremos o save…
db.pessoa.save(auxiliar)
Você pode utilizar o comando…
db.pessoa.find()
Para ver todas as pessoas que inserimos, no caso, você poderá ver
que o objeto com nome de Barry Allen possui um atributo a mais. Isso
graças ao nosso save. Ai já deu para perceber a diferença
né!?
E se fizesse isso com o insert? Iria da erro. Pois o save
verifica se existe algum objeto com o mesmo id, caso tenha ele
apenas altera, caso não tenha ela insere. Já o insert se
você tentar fazer o mesmo processo trocando o save pelo
insert, irá da erro, o Mongo vai dizer que já existe um
objeto com o mesmo _id.
E é isso.
Agora
você já sabe inserir e ver os dados. Até o próximo post ;)

0 comentários:
Postar um comentário