Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save antoniorrm/1fa34661453402094f5b9daa440bb635 to your computer and use it in GitHub Desktop.
Save antoniorrm/1fa34661453402094f5b9daa440bb635 to your computer and use it in GitHub Desktop.
Welcome file

Atividade 7

1. Popule a base de dados

  1. Adicione 4 usuários à sua coleção usuários com nome “pedro”, “alice”, ”maria” e “joao”. Os outros atributos são de sua escolha

Na atividade anterior foi feito.

  1. Adicione 3 posts para Pedro e 2 posts para Maria. Atributos texto e likes são de sua escolha e cid começa vazio ( [] )
pedro = db.usuarios.findOne({email:"[email protected]"});
db.posts.insert({texto:"Texto 1", likes:10, uid:pedro._id, cid:[]});
WriteResult({ "nInserted" : 1 })
db.posts.insert({texto:"Texto 2", likes:8, uid:pedro._id, cid:[]});
WriteResult({ "nInserted" : 1 })
db.posts.insert({texto:"Texto 3", likes:22, uid:pedro._id, cid:[]});
WriteResult({ "nInserted" : 1 })

maria = db.usuarios.findOne({email:"[email protected]"});
db.posts.insert({texto:"Texto 4", likes:50, uid:maria._id, cid:[]});
WriteResult({ "nInserted" : 1 })
db.posts.insert( {texto:"Texto 5", likes:100, uid:maria._id, cid:[]});
WriteResult({ "nInserted" : 1 })
  1. Adicione 2 comentários para um post de Pedro e mais 1 comentário para um post de Maria
	postPedro = db.posts.findOne({_id: ObjectId("5af1f5efba6140a17e42ab43")});
	var coment1 = {texto: "Comentário 1", pid:postPedro._id, uid:postPedro.uid};
	maria = db.usuarios.findOne({email:"maria@maria"});
	joao = db.usuarios.findOne({email:"joao@joao"});
	var coment2 = {texto: "Comentário 2", pid:postPedro._id, uid:joao._id};
	var coment3 = {texto: "Comentário 3", pid:postPedro._id, uid:maria._id};
	db.comentarios.insert(coment2);
	WriteResult({ "nInserted" : 1 })
	db.comentarios.insert(coment3);
	WriteResult({ "nInserted" : 1 })
	db.comentarios.find().pretty();
	postMaria = db.posts.findOne({_id:ObjectId("5af1f776ba6140a17e42ab46")});
	var coment4 = {texto: "Comentário 4", pid:postMaria._id, uid:joao._id};
	db.comentarios.insert(coment4);
	WriteResult({ "nInserted" : 1 })
	db.comentarios.find().pretty();
	db.posts.find().pretty();
	comentarioPedro1 = db.comentarios.findOne({_id:ObjectId("5af1fbedcd48e5bdd21ddfb4")});
	comentarioPedro2 = db.comentarios.findOne({_id:ObjectId("5af1fbf5cd48e5bdd21ddfb5")});
	postPedro.cid.push(comentarioPedro1._id);
	postPedro.cid.push(comentarioPedro2._id);
	db.posts.update({_id:postPedro._id}, postPedro);
	WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
	comentarioMaria1 = db.comentarios.findOne({_id:ObjectId("5af1fc85cd48e5bdd21ddfb6")});
	postMaria.cid.push(comentarioMaria1._id);
	db.posts.find().pretty();
	db.posts.update({_id:postMaria._id}, postMaria);
	WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
	db.posts.find().pretty();

2 - Elabore as seguintes consultas usando o mínimo de possível de chamadas a find()

a. Obtenha todos os comentários de um dado post

    db.comentarios.find({_id:{"$in": postPedro.cid}});

b. Obtenha todos os posts que tenham mais de 10 likes

	db.posts.find({likes:{"$gt": 10}});

c. Obtenha todos os posts que não tem comentários

	db.posts.find({cid: {"$eq":[ ]}});

d. Obtenha todos os posts que pelo menos 2 comentários

e. Obtenha todos os posts de Pedro

	 db.posts.find({uid: ObjectId("5ae3c425812a0a96601e1c61")}).pretty();

f. Obtenha todos os posts de Pedro que não tenha comentários

	var criterio = {"$and": [{uid: ObjectId("5ae3c425812a0a96601e1c61")}, {cid: [ ]}]};
	db.posts.find(criterio).pretty();

g. Obtenha todos usuários que tenham posts que tenham comentários

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment