복붙노트

[MONGODB] 정지 몽구스 하위 문서 배열 항목에 대한 _id 속성을 생성에서

MONGODB

정지 몽구스 하위 문서 배열 항목에 대한 _id 속성을 생성에서

당신이 하위 배열이있는 경우, 몽구스가 자동으로 각각에 대한 ID를 생성합니다. 예:

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

배열 내의 객체의 ID를 생성하지 몽구스를 말할 수있는 방법이 있습니까?

해결법

  1. ==============================

    1.그것은 간단합니다, 당신은 하위 스키마에이를 정의 할 수 있습니다 :

    그것은 간단합니다, 당신은 하위 스키마에이를 정의 할 수 있습니다 :

    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);
    
  2. ==============================

    2.당신은 스키마없이 하위 문서를 작성하고 _id 방지 할 수 있습니다. 그냥 _id 추가 : 거짓을 당신의 하위 문서 선언.

    당신은 스키마없이 하위 문서를 작성하고 _id 방지 할 수 있습니다. 그냥 _id 추가 : 거짓을 당신의 하위 문서 선언.

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

    이것은 당신의 subdoc에 _id 필드의 생성을 방지 할 수 있습니다. 몽구스 3.8.1에서 테스트

  3. ==============================

    3.당신이 하위 스키마를 지정하는 객체 리터럴 구문을 사용하는 경우 또한, 당신은 또한 단지 _id 추가 할 수 있습니다 : 그것은이 표시되지 않도록 거짓.

    당신이 하위 스키마를 지정하는 객체 리터럴 구문을 사용하는 경우 또한, 당신은 또한 단지 _id 추가 할 수 있습니다 : 그것은이 표시되지 않도록 거짓.

    {
       sub: {
          property1: String,
          property2: String,
          _id: false
       }
    }
    
  4. ==============================

    4.내가 몽구스 4.6.3를 사용하고 모든 내가 추가가 _ID이었다해야 할 일을했을 : 거짓을 스키마에, 필요는 하위 스키마를 만들 없습니다.

    내가 몽구스 4.6.3를 사용하고 모든 내가 추가가 _ID이었다해야 할 일을했을 : 거짓을 스키마에, 필요는 하위 스키마를 만들 없습니다.

    {
        _id: ObjectId
        subDocArray: [
          {
            _id: false,
            field: "String"
          }
        ]
    }
    
  5. ==============================

    5.당신은 일 중 하나를 사용할 수 있습니다

    당신은 일 중 하나를 사용할 수 있습니다

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

    또는

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

    두 번째 옵션을 사용하기 전에 몽구스 버전을 확인합니다

  6. from https://stackoverflow.com/questions/17254008/stop-mongoose-from-creating-id-property-for-sub-document-array-items by cc-by-sa and MIT license