#javascript #mongodb #express #mongoose #select
Вопрос:
Я получаю все товары и заполняю категорию MongoDB. Также у меня есть массив с идентификаторами категорий, и я хочу получить только продукты, у которых есть эти идентификаторы в объекте категории. Как выбрать только эти продукты?
arr of ids [ '615e94cab42d2274f0481232' ]
arr of products [
{
_id: new ObjectId("615e945cb42d2274f0481211"),
image: '',
category: { _id: new ObjectId("615da90b689b8ef91fa90afd"), name: 'Разное' },
name: '435пукп',
type: 'В упаковке',
piecesPerPackage: 2,
pricePerPiece: 1,
pricePerPackage: 2,
weight: 12,
description: 'вапвап'
},
{
_id: new ObjectId("615eaa08f68e788c63817641"),
image: '',
category: { _id: new ObjectId("615e94cab42d2274f0481232"), name: '2' },
name: '2',
type: 'В упаковке',
piecesPerPackage: 2,
pricePerPiece: 2,
pricePerPackage: 2,
weight: 2,
description: '2'
}
]
async sortCatalog(arr) {
const products = await CatalogModel.find().lean()
.populate("category", "name").select('-__v');
console.log("arr of ids", arr)
console.log("arr of products", products)
}
Комментарии:
1. после этого вы можете использовать $lookup и $match
Ответ №1:
Используйте category._id
, чтобы найти его.
await CatalogModel.find({'category._id':new ObjectId("615e94cab42d2274f0481232")})