Из документации:
Вы можете использовать Morphia для сопоставления запросов, которые вы, возможно, уже написали, используя сырой Java API к вашим объектам, или для доступа к функциям, которых еще нет в Morphia.
Например:
DBObject query = BasicDBObjectBuilder.start()
.add("albums",
new BasicDBObject("$elemMatch",
new BasicDBObject("$and", new BasicDBObject[] {
new BasicDBObject("albumId", albumDto.getAlbumId()),
new BasicDBObject("album",
new BasicDBObject("$exists", false))})))
.get();
Artist result = datastore.createQuery(Artist.class, query).get();
Надеюсь, это вам поможет.
Обновление:
В качестве альтернативы вы можете попробовать это:
DBCursor dbCursor = datastore.getCollection(MyClass.class).find(query);
while (dbCursor.hasNext()) {
DBObject obj = dbCursor.next();
MyClass class = morphia.fromDBObject(datastore, MyClass.class, obj);
// do stuff
}