【发布时间】:2020-12-05 07:32:32
【问题描述】:
所以,我有这种模型
const produkSchema = new mongoose.Schema({
nama_produk: String,
etalase: {type: mongoose.Schema.Types.ObjectID, ref: 'kategori'},
kategori: {type: mongoose.Schema.Types.ObjectID, ref: 'kategori'},
jenis: {type: mongoose.Schema.Types.ObjectID, ref: 'kategori.jenis'},
bahan: String,
warna: String,
deskripsi: String,
foto_produk: [String],
harga: Number,
link_bukalapak: String,
link_shopee: String,
link_tokopedia: String,
}, {
weights: {
nama_produk: 5,
},
timestamps: true
})
const tokoSchema = new mongoose.Schema({
username: {type: String, trim: true},
password: {type: String, required: true, select: false},
merek: String,
listMerek: [{type: mongoose.Schema.Types.ObjectID, ref: 'produk'}],
deskripsi: String,
follower: [{type: mongoose.Schema.Types.ObjectID, ref: 'user'}],
email: {type: String, trim: true, unique: true},
instagram: String,
whatsapp: String,
website: String,
alamat: String,
foto_profil: String,
bukalapak: String,
shopee: String,
tokopedia: String,
fotoktp: String,
banner: [{
gambar: {type: String, required: true, trim: true},
order: {type: Number, required: true},
}],
produk: [produkSchema],
etalase: [{type: mongoose.Schema.Types.ObjectID, ref: 'kategori'}],
approve: {type: Number, default: 0}, // 0: pending, 1: reject, 2: approve
populer: {type: Boolean, default: false},
}, {timestamps: true});
exports.toko = mongoose.model("toko", tokoSchema);
const jenisSchema = new mongoose.Schema({
label: String,
gambar: String,
}, {timestamps: true})
const kategoriSchema = new mongoose.Schema({
label: String,
gambar: String,
jenis: [jenisSchema]
}, {timestamps: true});
所以我想加入的是toko.produk.jenis 和kategori.jenis,但是如您所知,猫鼬不能在子文档之间填充,我尝试过toko.find().populate("produk.jenis", "label") 但它显示错误Schema hasn't been registered for model "kategori.jenis". Use mongoose.model(name, schema) 任何查询建议?我试过了
{
$lookup: {
"from": "kategoris",
"localField": "produk.jenis",
"foreignField": "jenis",
"as": "jenisnya"
}
}
但它似乎不起作用,而是返回一个空数组。我该怎么办?我应该重新排列我的架构吗?
【问题讨论】:
-
@turivishal 我已经完成了,你可以在这里看到完整的代码pastebin.com/3DWJQRcp
-
@turivishal 确定是pastebin.com/GNPEH94K
-
@turivishal 或这里的简单数据一pastebin.com/ekHnimh8
标签: mongodb mongoose aggregate mongoose-schema mongoose-populate