Предположим, у нас есть документы в коллекции Mongo следующего формата:
{
"_id" : "5fb3c5ce9997c61e15a9108c",
"stages" : {
"stage1" : {
"type" : "RandomType"
},
"stage2" : {
"type" : "RandomType2"
},
"arbitaryStage" : {
"type" : "RandomType3"
},
// Possibly many other stages
},
// Fields omitted
}
Как я могу запросить набор таких документов, где любое stages.X.type
равно предопределенному значению? Мое приложение не знает, что такое X и не заботится об этом, оно должно знать только, что тип хотя бы одного из этапов равен заданному значению. Я пытаюсь сделать это в Morphia, однако простой JS поможет мне, если это возможно сделать с данным форматом данных.
Для справки, класс, из которого произошел этот объект, следующий:
@Entity(value = "stages_collection", noClassnameStored = true)
public class StackOverflowQ {
@Id
private ObjectId id;
@Embedded
private Map<String, Stage> stages;
// Rest of fields/setters/getters omitted
}
public class Stage {
private String type;
// Rest of fields/setters/getters omitted
}
mongo
: вы можете попробовать использовать запрос агрегации с оператором$objectToArray
, примененным к встроенному документуstages
. Затем следуйте за ним со стадией$match
, чтобы соответствоватьstages.v.type
. - person prasad_   schedule 15.02.2021