284

サブドキュメント配列がある場合、Mongoose はそれぞれの ID を自動的に作成します。例:

{
    _id: "mainId"
    subDocArray: [
      {
        _id: "unwantedId",
        field: "value"
      },
      {
        _id: "unwantedId",
        field: "value"
      }
    ]
}

配列内のオブジェクトの ID を作成しないように Mongoose に指示する方法はありますか?

4

6 に答える 6

377

簡単です。サブスキーマでこれを定義できます。

var mongoose = require("mongoose");

var subSchema = mongoose.Schema({
    // your subschema content
}, { _id : false });

var schema = mongoose.Schema({
    // schema content
    subSchemaCollection : [subSchema]
});

var model = mongoose.model('tablename', schema);
于 2013-06-22T18:44:01.223 に答える
176

スキーマなしでサブドキュメントを作成し、_id. _id: falseサブドキュメント宣言に追加するだけです。

var schema = new mongoose.Schema({
   field1: {
      type: String
   },
   subdocArray: [{
      _id: false,
      field: { type: String }
   }]
});

これにより、サブドキュメントに_idフィールドが作成されなくなります。

マングースでテスト済みv5.9.10

于 2013-12-13T02:43:13.240 に答える
53

さらに、サブスキーマを指定するためにオブジェクト リテラル構文を使用する場合は、追加_id: falseしてそれを抑制することもできます。

{
   sub: {
      property1: String,
      property2: String,
      _id: false
   }
}
于 2014-05-28T05:12:41.360 に答える