MongoDB получить значение определенного вложенного поля - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь добиться простых методов set / get для пользовательских данных в mongodb

set метод прост:

set(id, path, value) {
    const update = {
        $set: {
            "__updtAt": Date.now()
        }
    };

    update.$set[path] = value;

    return this.collection.updateOne({_id: id}, update, {upsert: true});
}

, и мы можем использовать его как:

await sessionManager.set(clientSessionId, "aaa.bbb.ccc", 10);

очень просто, но как построить get метод, который работает как показано ниже?

await sessionManager.get(clientSessionId, "aaa.bbb.ccc"); //returns 10
await sessionManager.get(clientSessionId, "aaa.bbb"); //returns {ccc: 10}
await sessionManager.get(clientSessionId, "aaa"); //returns {aaa: {bbb: {ccc: 10}}}

await sessionManager.get(clientSessionId, "aaa.bbb.EEE"); //returns undefined
await sessionManager.get(clientSessionId, "zzz"); //returns undefined

Как я вижу, у драйверов mongodb для node.js есть только опция для возврата всего документа, который соответствуетзапрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...