Получить массив, сохраненный в MongoDB по свойству - PullRequest
0 голосов
/ 01 марта 2020

Массив, хранящийся в моем MongoDB, выглядит следующим образом:

[
    {
        "_id": "1",
        "name": "X",
        "age": "2",
        "createdAt": "2020-02-29T22:22:49.491Z",
        "updatedAt": "2020-02-29T22:22:49.491Z",
        "__v": 0
    },
    {
        "_id": "2",
        "name": "A",
        "age": "3",
        "createdAt": "2020-02-28T22:22:49.491Z",
        "updatedAt": "2020-02-28T22:22:49.491Z",
        "__v": 0
    },
    {
        "_id": "3",
        "name": "B",
        "age": "2",
        "createdAt": "2020-02-29T12:22:49.491Z",
        "updatedAt": "2020-02-29T12:22:49.491Z",
        "__v": 0
    }
]

Как видите, 2 объекта имеют одинаковое age как 2 и 1 имеют age как 3. Я хочу запросить у node.js на age, поэтому, когда я запрашиваю по age 2, я получаю массив с объектами, имеющими age 2. В настоящее время findById работает для меня с запросом как id.

Вот код:

exports.findByAge = (req, res) => {
    Property.findById(req.params.propertyId)
        .then(property => {
            if (!property) {
                return res.status(404).send({
                    message: "Not found " + req.params.propertyId
                });
            }
            res.send(property);
        }).catch(err => {
            if (err.kind === 'ObjectId') {
                return res.status(404).send({
                    message: "Not found with id " + req.params.propertyId
                });
            }
            return res.status(500).send({
                message: "Error retrieving property with id " + req.params.propertyId
            });
        });
};

Как запросить по age?

1 Ответ

1 голос
/ 01 марта 2020

Вы должны обратиться к Найти документы с помощью фильтра запросов в Mongodb и использовать его для фильтрации документов с полем age. и прочитайте эту ссылку для Операторы запросов сравнения .

exports.findByAge = (req, res) => {
    Property.find({ age: { $eq: req.params.age } })
        .then(property => {
            if (!property) {
                return res.status(404).send({
                    message: "Not found " + req.params.propertyId
                });
            }
            res.send(property);
        }).catch(err => {
            if (err.kind === 'ObjectId') {
                return res.status(404).send({
                    message: "Not found with id " + req.params.propertyId
                });
            }
            return res.status(500).send({
                message: "Error retrieving property with id " + req.params.propertyId
            });
        });
};

, и вы можете отсортировать поступающие данные с помощью cursor.sort () , добавив их после find.

Property.find({ age: { $eq: req.params.age } }).sort({ _id: -1 })

Укажите в параметре сортировки поле или поля для сортировки и значение 1 или -1, чтобы указать сортировку по возрастанию или убыванию соответственно.

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