如何在mongodb中查询链接文档

时间:2017-05-29 10:17:51

标签: javascript mongodb express mongoose mongoose-schema

我想知道是否可以在链接的收藏中直接搜索。

我使用Express和mongoosejs

我有以下情况。

我有3个系列,交易产品商店,我已关联产品商店交易集合

const DealSchema = new Schema({
  ...
  product: {
    type: Schema.Types.ObjectId,
    ref: 'product'
  },
  shop: {
    type: Schema.Types.ObjectId,
    ref: 'shop'
  },
  ...
});

在我的收藏品中,我有一个名为upc的字段。

我有一个处理交易创建的控制器,但是在我创建交易之前,我想检查是否已经在这个商店中与同一个UPC达成交易,如果是这样我只会更新确认的字段。

这是我的控制器

async create(req, res) {
  const dealProps = req.body;
  const product = await Products.findOne({ upc: dealProps.upc });
  let deal;
  if (product) {
    deal = await Deals.findOne({ product: product._id });
    if (deal.shop.toString() === dealProps.shop.toString()) {
      const updatedDeal = await Deals.findOneAndUpdate({ product: product._id }, {
        $push: {confirmedBy: dealProps.user }
      });
      res.send(updatedDeal);
    }
  } else {
    deal = await (new Deals(dealProps)).save();
    res.send(deal);
  }
}

我试图在产品系列中直接搜索,如下所示:

const product = await Deals.findOne({'product.upc': dealProps.upc });

但是它返回null。

有没有办法在链接的集合中直接搜索?我是否需要为产品集合中的upc字段创建索引?

如果没有,我应该重新考虑我的交易集合添加upc和storeId以简化查找吗?

感谢您的帮助,非常感谢。

0 个答案:

没有答案