Я только что заметил, что вопрос помечен как "java", поэтому вы хотели бы сделать что-то вроде:
final BasicDBObject id = new BasicDBObject("a", aVal)
.append("b", bVal)
.append("c", cVal);
results = coll.find(new BasicDBObjet("_id", id));
Я тоже использую Morphia, но обнаружил (что пока он работает)генерирует много ошибок при попытке составного ключа.Я использую приведенное выше при запросах, чтобы избежать этих ошибок.
Мой оригинальный код (который также работает):
final ProbId key = new ProbId(srcText, srcLang, destLang);
final QueryImpl<Probabilities> query = ds.createQuery(Probabilities.class)
.field("id").equal(key);
Probabilities probs = (Probabilities) query.get();
Мой класс ProbId аннотирован как @Entity(noClassnameStored = true)
и внутри класса Вероятностиполе идентификатора @Id ProbId id;