Se você tiver matrizes de subdocumento, o Mongoose criará automaticamente identificações para cada uma. Exemplo:
{
_id: "mainId"
subDocArray: [
{
_id: "unwantedId",
field: "value"
},
{
_id: "unwantedId",
field: "value"
}
]
}
Existe uma maneira de dizer ao Mongoose para não criar IDs para objetos em uma matriz?
node.js
mongodb
mongoose
subdocument
Atlas
fonte
fonte
_id
campos, mesmo na coleção subSchema, ou apenas no caso em que o subSchema está sendo usado para incorporar como matriz de itens de sub-documentos? Peço isso particularmente por causa da minha própria pergunta sobre SO hoje.{ _id: false }
, os dois níveis do sub-esquema estão sem IDs. Alguma maneira de contornar esse comportamento?{ _id : true }
?let studentSchema = new Schema({ studentId: { type: ObjectId, ref: Student.modelName }, performance: [performanceSchema] }, { _id: false });
para isso:let studentSchema = new Schema({ _id: false, id: false, studentId: { type: ObjectId, ref: Student.modelName }, performance: [performanceSchema] });
e isso interrompeu a_id
criação,studentSchema
mas reteve a_id
criação nos objetos naperformance
matriz de sub-documentos. Não tenho certeza se ambos_id: false
eid: false
são necessários.Você pode criar sub-documentos sem esquema e evitar
_id
. Basta adicionar_id:false
à sua declaração de subdocumento.Isso impedirá a criação de um
_id
campo no seu subdoc.Testado em Mongoose
v5.9.10
fonte
Além disso, se você usar uma sintaxe literal de objeto para especificar um sub-esquema, também poderá adicionar
_id: false
para suprimi-lo.fonte
Estou usando o mangusto 4.6.3 e tudo que eu precisava fazer era adicionar _id: false no esquema, sem necessidade de criar um subesquema.
fonte
_id
é um campo e não uma restrição._id = mongoose.Types.ObjectId()
, esse _id seria único na coleção?Você pode usar qualquer um
ou
Verifique sua versão do mangusto antes de usar a segunda opção
fonte
Se você deseja usar um esquema predefinido (com _id) como subdocumento (sem _id), faça o seguinte na teoria:
Mas isso não funcionou para mim. Então eu adicionei que:
Agora eu posso incluir subSourceSchema no meu documento pai sem _id. Não sei se essa é a maneira limpa de fazer isso, mas funciona.
fonte