Jika Anda memiliki larik sub dokumen, Mongoose secara otomatis membuat id untuk masing-masingnya. Contoh:
{
_id: "mainId"
subDocArray: [
{
_id: "unwantedId",
field: "value"
},
{
_id: "unwantedId",
field: "value"
}
]
}
Apakah ada cara untuk memberitahu Mongoose untuk tidak membuat id untuk objek dalam array?
node.js
mongodb
mongoose
subdocument
Atlas
sumber
sumber
_id
bidang bahkan dalam koleksi subSchema, atau hanya dalam kasus di mana subSchema sedang digunakan untuk menanamkan sebagai array item sub-dokumen? Saya menanyakan ini terutama karena pertanyaan saya sendiri pada SO hari ini.{ _id: false }
, kedua tingkat sub-skema tanpa id. Adakah cara untuk mengatasi perilaku ini?{ _id : true }
?let studentSchema = new Schema({ studentId: { type: ObjectId, ref: Student.modelName }, performance: [performanceSchema] }, { _id: false });
ini:let studentSchema = new Schema({ _id: false, id: false, studentId: { type: ObjectId, ref: Student.modelName }, performance: [performanceSchema] });
dan itu menghentikan_id
penciptaan padastudentSchema
tetapi mempertahankan_id
penciptaan pada objek dalamperformance
array sub-dokumen. Tidak yakin apakah keduanya_id: false
danid: false
diperlukan.Anda dapat membuat sub-dokumen tanpa skema dan hindari
_id
. Tambahkan saja_id:false
deklarasi subdokumentasi Anda.Ini akan mencegah pembuatan
_id
bidang di subdoc Anda.Diuji dalam luwak
v5.9.10
sumber
Selain itu, jika Anda menggunakan sintaks literal objek untuk menentukan sub-skema, Anda juga dapat menambahkan
_id: false
untuk menekannya.sumber
Saya menggunakan luwak 4.6.3 dan yang harus saya lakukan adalah menambahkan _id: false dalam skema, tidak perlu membuat subschema.
sumber
_id
adalah bidang daripada kendala._id = mongoose.Types.ObjectId()
, apakah _id itu unik di seluruh koleksi?Anda bisa menggunakan salah satunya
atau
Periksa versi luwak Anda sebelum menggunakan opsi kedua
sumber
Jika Anda ingin menggunakan skema yang telah ditentukan (dengan _id) sebagai sub dokumen (tanpa _id), Anda dapat melakukan sebagai berikut dalam teori:
Tetapi itu tidak berhasil untuk saya. Jadi saya menambahkan:
Sekarang saya dapat memasukkan subSourceSchema dalam dokumen induk saya tanpa _id. Saya tidak yakin ini cara bersih untuk melakukannya, tetapi berhasil.
sumber