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

时间:2018-11-08 22:30:13

标签: node.js database mongodb express mongoose

我从一个查询中获得了s1._domainkey.xxx.com s1.domainkey.u161779.wxxx.sendgrid.net s2._domainkey.xxx.com s2.domainkey.u161779.wxxx.sendgrid.net 的数组,然后需要在另一个查询中使用它们。

功能如下:

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), ... ] }}); 都等于上述数组的值的sales。现在,它不起作用,并显示以下消息:_product。如何使最后一个查询起作用?

1 个答案:

答案 0 :(得分:1)

您要在数组中插入一个数组,请改试试

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