繁体   English   中英

猫鼬-如何通过ObjectId的“数组”查找?

[英]Mongoose - How to find by an 'array' of ObjectId?

我从查询中获取一个ObjectId数组,然后需要在另一个查询中使用它们。

这是函数:

exports.getAllByShop = wrap(async(req, res, next) => {
    const products = await Product.find({ _shop: mongoose.Types.ObjectId(req.params.shopId) }).select('_id');
    // how to make this query?
    const sales = await Sale.find({ _product: { $in: [ products ]}});
    res.status(200).json(sales);
});

第一个查询products的结果如下所示:

[ 
  { _id: 5be3601f90e40b35547ae6b4 },
  { _id: 5be4b5a3443abf196cb4cc9a }
]

我想要达到的目标:

const sales = await Sale.find({ _product: { 
$in: 
  [ 
    mongoose.Types.ObjectId(prod1),
    mongoose.Types.ObjectId(prod2),
    ... 
  ]
}});

我需要找到所有具有_product等于上述数组的值的sales 现在,它不起作用,并显示以下消息: "Cast to ObjectId failed for value "[ { _id: 5be3601f90e40b35547ae6b4 },↵ { _id: 5be4b5a3443abf196cb4cc9a } ]" at path "_product" for model "sale"" 如何使最后一个查询起作用?

您将数组插入数组中,请尝试使用此方法

const productIds = products.map((v) => v)
const sales = await Sale.find({ _product: { $in: productIds }});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM