중첩 된 객체 (예 : 객체의 배열)로 문서를 만들 때 각 객체에는 자체 _id가 지정됩니다. 예를 들어, 내 스키마는 다음과 같습니다 다음 lists.allocations
배열의 모든 allocation
객체이기 때문에 문서를 최종적으로 생성 될 때몽구스가 모든 중첩 된 객체에 _id를 추가합니다.
mongoose = require "mongoose"
Schema = mongoose.Schema
schema = new Schema
name:
type: String
required: true
unique: true
trim: true
lists: [
list:
type: Schema.Types.ObjectId
required: true
ref: "List"
allocations: [
allocation:
type: Number
required: true
]
]
createdAt:
type: Date
default: Date.now
updatedAt:
type: Date
# Ensure virtual fields are serialised.
schema.set "toJSON",
virtuals: true
exports = module.exports = mongoose.model "Portfolio", schema
lists
배열의 모든 개체가, _id 주어집니다. 이것은 잔인한 것 같아서 문서를 부풀게하지만 MongoDB (또는 몽구스)가이 추가 정보를 담고있는 문서를 필요로하는 이유가 있습니까? 그렇지 않다면, _id가 루트 문서에 있도록 그 일이 발생하지 않도록하고 싶습니다.
또한 클라이언트 코드에 id
필드가 필요하기 때문에 Mongoose는 _id
에 대해 가상 id
을 자동으로 생성합니다. 이것이 JSON으로 반환 된 가상의 이유입니다. 그러나 루트에있을뿐만 아니라 문서 전체에 _id
개의 필드가 있기 때문에이 가상은 모두을 복제합니다. 추가 _id 필드를 막을 수있는 방법이 없다면 어떻게 가상 문서를 _id에만 적용 할 수 있습니까? 아니면 내가하고 싶은 일을 할 수있는 더 좋은 방법이 있다면, 그것은 무엇일까요?
(3.6) 단순히 _id를 추가 할 수 있어요에 대한 코드를 추가 : 거짓 별도의 하위 스키마를 만들 필요없이 기본 스키마의 하위 문서 오른쪽으로 – cyberwombat
JavaScript 솔루션을 찾고있는 경우 : http://stackoverflow.com/questions/17254008/stop-mongoose-from-created-ids-for- subdocument-arrays –