среда, 5 февраля 2014 г.

MongoDB. Homework week 3.

Homework 3.1
Скачиваем файлик, импортим в монго и пишем код:

import java.net.UnknownHostException;
import java.util.Iterator;

import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;



public class MainClass {

public static void main(String[] args) throws UnknownHostException {
MongoClient client = new MongoClient();
DB base = client.getDB("school");
DBCollection collection = base.getCollection("students");
DBObject query = new BasicDBObject();
DBCursor cursor = collection.find(query);
try {
while (cursor.hasNext()) {

DBObject cur = cursor.next();
BasicDBList secondCur = (BasicDBList) cur.get("scores");
Iterator<Object> iterator = secondCur.iterator();
Double lowest = (double) 101;
DBObject lowestObj = null;
while (iterator.hasNext()) {

DBObject innerCursor = (DBObject) iterator.next();
String type = (String) innerCursor.get("type");
Double score = (Double) innerCursor.get("score");
System.out.println("Type: " + type + " with score: "
+ score);
if (type.equals("homework") && score < lowest) {
lowestObj = innerCursor;
lowest = score;
}
}
secondCur.remove(lowestObj);
System.out.println("Remove: " + lowestObj);
collection.update(new BasicDBObject("_id", cur.get("_id")),
new BasicDBObject("$set", new BasicDBObject("scores",
secondCur)));

System.out.println("student: " + cur.get("_id"));
}

} finally {
cursor.close();
}

}
}
После чего пишем:
db.students.aggregate({'$unwind':'$scores'},{'$group':{'_id':'$_id', 'average':{$avg:'$scores.score'}}}, {'$sort':{'average':-1}}, {'$limit':1})
Ответ: 13
Homework 3.2+3.3
Скачиваем файлик, запускаем, меняем код на:


public DBObject findByPermalink(String permalink) {

DBObject post = postsCollection.findOne(new BasicDBObject("permalink",
permalink));


return post;
}

// Return a list of posts in descending order. Limit determines
// how many posts are returned.
public List<DBObject> findByDateDescending(int limit) {

List<DBObject> posts = null;

DBCursor cursor = postsCollection.find()
.sort(new BasicDBObject().append("date", -1)).limit(limit);
try {
posts = cursor.toArray();
} finally {
cursor.close();
}
return posts;
}

public String addPost(String title, String body, List tags, String username) {

System.out.println("inserting blog entry " + title + " " + body);

String permalink = title.replaceAll("\\s", "_"); // whitespace becomes _
permalink = permalink.replaceAll("\\W", ""); // get rid of non
// alphanumeric
permalink = permalink.toLowerCase();

BasicDBObject post = new BasicDBObject();
// ADDED!
post.append("title", title);
post.append("body", body);
post.append("tags", tags);
post.append("author", username);
post.append("permalink", permalink);
post.append("date", new Date());
post.append("comments", new ArrayList());
try {
postsCollection.insert(post);
System.out.println("Inserting blog post with parametrs");

} catch (Exception e) {
System.out.println("Error inserting post");
return null;
}

return permalink;
}


public void addPostComment(final String name, final String email,
final String body, final String permalink) {
BasicDBObject comment = new BasicDBObject("author", name).append(
"body", body);
if (email != null && !email.equals(""))
comment.append("email", email);
WriteResult result = postsCollection.update(new BasicDBObject(
"permalink", permalink), new BasicDBObject("$push",
new BasicDBObject("comments", comment)), false, false)));

}

}
После чего запускаем volidate.py:
Tests Passed for HW 3.2. Your HW 3.2 validation code is njkfd489hj9fhds8934kf23

Tests Passed for HW 3.3. Your HW 3.3 validation code is ihfr48nf89jk09309kj0d2d

Комментариев нет:

Отправить комментарий