Как выбрать только товары с идентификаторами из массива идентификаторов. MongoDB

#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")})