package com.mongodb.hvdf.util;
import java.util.List;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
import com.mongodb.hvdf.api.Sample;
public class MongoDBQueryHelpers {
public static void getSamplesFromCursor(DBCursor cursor, int limit, List<Sample> outList){
try{
// exhaust the cursor adding each sample
cursor.batchSize(limit);
cursor.limit(limit);
while(cursor.hasNext()) {
outList.add(new Sample(cursor.next()));
}
} finally {
// ensure cursor is closed
cursor.close();
}
}
public static BasicDBObject findMany(final String fieldName, final List<Object> values){
return new BasicDBObject(fieldName,
new BasicDBObject("$in", values));
}
public static BasicDBObject pushToCappedArray(
final String fieldKey, final BasicDBList items, final int limit) {
return new BasicDBObject("$push",
new BasicDBObject(fieldKey,
new BasicDBObject("$each", items)
.append("$slice", -limit)));
}
public static BasicDBObject findBy(final String fieldName, final Object value){
return new BasicDBObject(fieldName, value);
}
public static BasicDBObject getFields(final String... fieldNames){
BasicDBObject fieldSpec = new BasicDBObject();
for(String field : fieldNames){
fieldSpec.append(field, 1);
}
return fieldSpec;
}
public static BasicDBObject sortByDecending(final String fieldName){
return new BasicDBObject(fieldName, -1);
}
public static String subField(final String outer, final String inner) {
return outer + "." + inner;
}
public static BasicDBObject limitArray(final String fieldName, final int limit) {
return new BasicDBObject(fieldName, new BasicDBObject("$slice", -limit));
}
public static BasicDBObject singleField(final String fieldName) {
return new BasicDBObject(fieldName, 1).append("_id", -1);
}
public static BasicDBObject setValue(final String fieldName, Object value) {
return new BasicDBObject("$set", new BasicDBObject(fieldName, value));
}
}