ネストされたオブジェクト(オブジェクトの配列など)を含むドキュメントを作成すると、各オブジェクトには独自の_idが与えられます。例えば、私のスキーマは次のようになります。Mongooseはすべてのネストされたオブジェクトに_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
、アレイ内のすべてのオブジェクトは、すべてのallocation
オブジェクトは、文書が最終的に作成されlists.allocations
配列、であるとして、_idを与えています。これは過剰なものだと思われ、ドキュメントを膨らませますが、MongoDB(またはMongoose)がこの追加情報を入れるためにドキュメントを必要とする理由はありますか?もしそうでなければ、_idがルート文書にあるように、それが起こらないようにしたいと思います。
さらに、id
のはクライアントコードで必要となるため、_id
の仮想番号が自動的に作成されます。これが私がJSONで返されたバーチャルを持っている理由です。しかし、文書全体には_id
のフィールドが存在するので、このバーチャルはすべてのものを複製します。追加の_idフィールドを防ぐ方法がない場合、どのように仮想ドキュメントを_idにのみ適用することができますか?それとも、私がやろうとしていることをするより良い方法があれば、それは何でしょうか?
のためのコードを追加し、私は単純に_idを追加することができています:偽別のサブスキーマを作成する必要なくメインのスキーマの右のサブ文書に追加 – cyberwombat
JavaScriptソリューションをお探しの場合:http://stackoverflow.com/questions/17254008/stop-mongoose-from-created-ids-for- subdocument-arrays –