Я использую nodeJS и mongoose/mongoDB для создания API. Рассмотрим следующую модель универсальной модели (Gmodel):
{
name: "teleni",
type: "person",
data: mixed
}
Поле данных в этом документе имеет смешанный тип, поэтому оно может быть любым, но я намереваюсь, чтобы в большинстве случаев оно было вложенным документом/объектом (в зависимости от значения поля типа). Если бы я хотел найти все документы типа person, я бы выполнил следующий код:
Gmodel.find({type: "person"}, callbackFunction)
Теперь рассмотрим другой экземпляр модели:
{
name: "teleni",
type: "person",
data: {
data_type: "event",
date: "Jan 30 2019"
}
}
Моя проблема в том, что я хочу использовать mongoose для поиска всех документов, где поле данных является объектом/документом, где поле data_type является «событием». Я пробовал следующий код:
Gmodel.find({data: {data_type: "event"}}, callbackFunction)
Однако ничего не возвращается, когда я выполняю этот код, потому что find ищет документы, где поле данных равно {data_type: "event"}
. Итак, как мне использовать find для извлечения документов, вложенные документы которых (смешанного типа) частично соответствуют критериям, аналогично тому, как поиск работает с полями верхнего уровня.