Ниже приведен ответ, который я получаю при выполнении следующего запроса.
Order.find().then((find) => {
res.json(find);
});
[
{
"isPrime":false,
"orderStatus":"Pending",
"orderTotal":"27.98",
"orderType":"x",
"subOrderId":"x",
"children":[
"5bd105dc1b85bc2faca27603",
"5bd105dd1b85bc2faca2760b",
"5bd105dd1b85bc2faca27613"
],
"_id":"x",
"deliveryDate":"x",
"orderChannel":"xx",
"orderDate":"xZ",
"orderLabel":"NA",
"shipDate":"x",
"__v":0
},
]
Как я могу получить информацию о дочерних элементах в том же запросе или, возможно, в другом запросе?
нет, дочерние данные в целом, т.е. один из дочерних элементов - это информация о клиенте из таблицы. Необходимо получить дочерние данные (идентификатор, имя клиента, адрес ...)
Вы должны использовать $ lookup в конвейере агрегации. Что-то вроде Order.aggregate({$lookup:{from:replace with child collection name, localField:"children", foreignField:"_id", as:"chidren"}}). Убедитесь, что типы locaField и foreignField совпадают.
Получение ошибки MongooseError: Mongoose 5.x запрещает передачу множества операторов в Model.aggregate(). Вместо Model.aggregate({ $match }, { $skip }) сделать Model.aggregate([{ $match }, { $skip }])





Получил, что он работает со следующим кодом Дочерние документы с 1 по 3 - это дочерние документы. Пришлось также внести изменения в мою схему.
из
children:[{type:Schema.ObjectId, ref:"ONLINE_ORDER_ITEMS"} , {type:Schema.ObjectId, ref:"ONLINE_ORDER_CUSTOMERS"}, {type:Schema.ObjectId, ref:"ONLINE_ORDER_SHIPMENTS"}]
к
children1:[{type:Schema.ObjectId, ref:"ONLINE_ORDER_ITEMS"}],
children2:[{type:Schema.ObjectId, ref:"ONLINE_ORDER_CUSTOMERS"}],
children3:[{type:Schema.ObjectId, ref:"ONLINE_ORDER_SHIPMENTS"}]
Order.find({ 'orderStatus': typeFlag}).populate('children1').populate('children2').populate('children3').then((find) => {
res.json(find);
});
Вы хотите вернуть только дочернее поле?