考虑我有下面的表:
const ImageSchema = new mongoose.Schema({
name: {
type: String,
},
url: {
type: String,
},
createdAt: {
type: Date,
default: Date.now(),
},
updatedAt: {
type: Date,
default: Date.now(),
},
})
module.exports = mongoose.model("Image", ImageSchema)
另一个使用上述集合作为引用的集合:
const ProductSchema = new mongoose.Schema(
{
name: {
type: String,
required: [true, "Please add a product name"],
},
photos: {
type: [mongoose.Schema.ObjectId],
ref: "Image",
},
createdAt: {
type: Date,
default: Date.now,
},
updatedAt: {
type: Date,
default: Date.now,
},
},
)
module.exports = mongoose.model("Product", ProductSchema)
然后是另一个使用这些集合的集合:
const ContainerSchema = new mongoose.Schema(
{
name: {
type: String,
required: [true, "Please add a product name"],
},
products: {
type: [mongoose.Schema.ObjectId],
ref: "Product",
},
images: {
type: [mongoose.Schema.ObjectId],
ref: "Image",
},
createdAt: {
type: Date,
default: Date.now,
},
updatedAt: {
type: Date,
default: Date.now,
},
},
)
module.exports = mongoose.model("Container", ContainerSchema)
使用mongoose,我如何使用产品名称而不是产品ID来查询(查找)容器?
我的意思是,我可以通过以下方式使用产品ID查找容器:
const container = await Container.find({product : product_id});
但是我希望找到使用产品名称的容器。另外,请记住这些产品在容器中是作为数组使用的,我如何找到使用产品名称的容器?
1条答案
按热度按时间7jmck4yq1#
采用聚集法可以更好地达到这些值。
我们需要使用**$elemMatch或".$."**标签来搜索数组。
$match条件将被创建为;
霍普,这对你有帮助。