mongodb 如何根据文档中引用的数据,使用mondoose中的find方法过滤文档?

m1m5dgzv  于 2023-01-04  发布在  Go
关注(0)|答案(1)|浏览(123)

我正在开发电子商务应用程序。我有orderItem架构

const orderItemsSchema = mongoose.Schema(
  {
    order: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'OrderItems',
      required: true,
    },
    product: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Products',
      required: true,
    },
    quantity: {
      type: Number,
      default: 1,
    },
    subCost: {
      type: Number,
      required: true,
    },
  },
  {
    timestamps: true,
  }
);

其中产品架构具有字段"owner",该字段也是一个引用。
我希望得到orderItems基于所有者的产品。
例如:一个店主想要查看他的哪些产品已经售出,所以他将查询orderItems来获得他的售出物品。

8iwquhpp

8iwquhpp1#

我不是mongoose方面的Maven,所以可能语法并不完全正确:

// You get all products _id that owner currently sells
const yourOwnerObjectId = mongoose.Types.ObjectId(yourOwnerId); // Create the objectId from a string
const productsOwner = Products.find({owner: yourOwnerObjectId}).select({_id: 1})

// You get all orders that contains any of previous product _id
const orderWithProductsSold = OrderItems.find({_id: {$in: productsOwner}})

我不确定关于_id的第一个查询返回的是什么,也许您必须对ObjectId进行某种类型的转换或执行第二个查询,但我认为这个想法是正确的。

相关问题