Я пытаюсь запросить MongoDB с помощью Mongoose, чтобы найти документы на основе значения вложенного свойства.Query вложенное свойство в Mongoose (без точечной нотации)
var Obj = new mongoose.Schema({
mainProperty: {
nestedProp1: String
nestedProp2:String
}
})
В связи с тем, как будут получены данные, мне нужно, чтобы выполнить запрос без записи с точками (как показано ниже).
Obj.find({'mainProperty.nestedProp': 'value'})
Код выше получите мне правильные результаты, но мне нужно пройти в условиях запроса в указанном ниже формате.
Obj.find({ mainProperty: { nestedProp1: 'value' } })
Я передаю во всем объекте запроса в качестве аргумента из на стороне клиента, а не на развитие запроса на сервере. К моменту, когда он попадает на сервер, приведенный выше код выглядит так, как показано ниже.
Obj.find(queryCondition)
//queryCondition holds a value of { mainProperty: { nestedProp1: 'value' } }
Поскольку существует два свойства, вложенные в mainProperty, это недопустимо для выполнения поиска выше. Он будет искать документы, у которых mainProperty точно соответствует тому, что передается в следующем двоеточии (что означает документы, значения которых равны nestedProp1 и не имеют nestedProp2).
Есть ли другой способ назвать это (без точечной нотации или редактирования самого объекта), где он будет запрашивать значение nestedProp1, а не значение mainProperty?
Спасибо за ответ! Это, безусловно, чистый способ сделать это в небольшом масштабе, но в реальном приложении у меня есть 8 не вложенных свойств и 5 вложенных свойств. Кроме того, свойства, переданные в запрос каждый раз, будут различаться. Я надеюсь избежать использования большого оператора if, чтобы определить, что используется и преобразовать свойства. Я должен был указать, что у меня есть еще много свойств, когда я задал вопрос, и я ценю помощь! –