Функция Mongo, чтобы определить, существует ли суперстрока в массиве. Нодейс,

Документ в моей коллекции mongo 'companies' выглядит так:

{
    "companyName": "",
    "companyIcon": "",
    "domains": [
        "companyDomainA.com",
        "companyDomainB.dev"
    ],
    "allowSubDomains": true
}

В моем приложении пользователь вводит свой адрес электронной почты. Использование собственного драйвера mongo Nodejs (https://mongodb.github.io/node-mongodb-native), я хочу запросить (найти), к какой компании принадлежит пользователь.

Проблема в том, что пользователь вводит адрес электронной почты как [email protected]. Я хочу иметь возможность запрашивать и находить документ компании пользователя на основе его электронной почты (поддомен 0 или более уровней), т.е. если суперстрока строки существует в массиве в монго. (Осторожно, я не могу хранить все поддомены компании, так как они динамические и могут изменяться по желанию)

Есть ли способ изменения схемы регулярного выражения/db для достижения этого?

Заранее спасибо!!


person Mithun    schedule 19.12.2019    source источник


Ответы (1)


Я бы сделал это так. Сначала найдите корневой домен по адресу электронной почты. Для этого я бы разделил электронное письмо и сначала получил домен.

const email = "[email protected]";
const domain = email.split('@')[1]; // dept.companyDomainA.com

Теперь извлеките из него хост (companyDomainA.com). Перейдите по этой ссылке.

Итак, я нашел корневой домен companyDomainA.com. Теперь запустите поисковый запрос.

db.collection('documents').find({"domains": "companyDomainA.com"});

Я не тестировал этот код.

person Shihab    schedule 19.12.2019