У меня есть несколько документов в коллекции в MongoDB, как показано в этом снимке . Я создаю веб-приложение, для которого это внутренние данные.
Каждый документ имеет атрибут name
. У пользователя есть возможность поиска name
во внешнем интерфейсе. Теперь предположим, что пользователь ищет «Сэм», а затем я возвращаю документы, где name
либо «Сэм», либо начинается с «Сэм». Я реализовал это, используя следующий код:
let name = "^"+req.body.name;
const name_regex = new RegExp(name, 'gi');
try {
let members = await Member.find({ name: req.body.name=="" ? /^$|/ : name_regex});
res.send(members);
}
то есть, если пользователь не предоставил имя, верните все документы, иначе верните документы, соответствующие регулярному выражению.
Итак, если пользователь ищет «Сэм», на выходе получаются все 3 документа, поскольку все они имеют name
, начиная с «Сэма», но если пользователь ищет «Сэмм», то возвращается только один документ, где name
«Сэмми».
Теперь я хочу реализовать тот же атрибут logi c для age
, т. Е. Если пользователь ищет возраст: 2, то я хочу вернуть все документы, для которых указан возраст. ровно 2 или начинается с di git 2. Но я не могу использовать вышеописанный метод, так как он работает только со строками.
Примечание: я использую пакет mon goose и Express рамки.