Моей коллекции:Фильтра массив поддокумента используя подстроку в качестве критериев
{
title: 'Computers',
maincategories:[
{
title: 'Monitors',
subcategories:[
{
title: '24 inch',
code: 'AFG'
}
]
}
]
}
Я хочу запросить код. Код - это только первая часть, поэтому я хочу иметь все подкатегории, содержащие данный поиск. Таким образом, AFG101
вернет эти подкатегории.
Моего запрос:
module.exports = (req, res) => {
var q = {
'maincategories.subcategories': {
$elemMatch: {
code: 'AFG101'
}
}
};
var query = mongoose.model('TypeCategory').find(q, {'maincategories.$': 1, 'title': 1});
query.exec((err, docs) => {
res.status(200).send(docs);
});
};
Моей проблема:
Как найти часть строки?
AFG101
должен возвращать все подкатегории с свойствомcode
, содержащим любую часть строки. Таким образом, в этом случаеAFG
будет хитом. Как и в этом вопросе sql: MySQL: What is a reverse version of LIKE?Как проецировать подкатегории. Текущий запрос возвращает все подкатегории. Я только хочу вернуть эти удары.
Я думаю, было бы лучше, если бы вы могли разобрать код 'AFG101' в соответствующий код, прежде чем запрашивать Монго. – hyades
@hyades, я не понимаю. Как я могу это сделать? – Per
Думаю, я понимаю, чего вы хотите в первом вопросе. Вы хотите, например: иметь несколько документов с «кодом: AFG1», «code; AFG2», «code: AFG3,» code: ABC1 ». Итак, когда пользователь (чего бы то ни было) набирает что-то вроде« AFG «mongo доставит вам все документы, содержащие« AFG »в поле CODE. Если это так, отметьте« regex »в mongodb. https://docs.mongodb.com/manual/reference/operator/query/regex/ #examples –