복붙노트

[MONGODB] MongoDB를에 수집 당 하나 이상의 스키마를 사용하여

MONGODB

MongoDB를에 수집 당 하나 이상의 스키마를 사용하여

나는 MongoDB의에서 수집 당 하나 이상의 스키마를 사용하고 싶었, 그것을 사용하는 방법 ....? 나는 그것을 실행하려고하면 그것은 나에게 오류를 제공합니다 : 오류:

Heres는 내 schema.js

   var mongoose = require('mongoose');

      var Schema = mongoose.Schema
          , ObjectId = Schema.ObjectId;

   var checkInInfoSchema= new Schema({
       name:String,
       loginSerialId:Number
   });


   var loginUserSchema = new Schema({
          sn : { type: Number, unique:true }
          ,uname: {type:String, unique:true}
          ,pass:String
      });

   var registerUserSchema = new Schema({
       sn : { type: Number, unique:true }
       , name: String   //his/her name
       ,pass:String,
       companyKey:{type:String},
       uname:{type:String,unique:true}
   });



   var checkInOutSchema = new Schema({
       uname: String
       ,companyKey:String
       ,task:String
       ,inTime:String
       ,outTime:String
       ,date:{type:String}
       ,serialId:{type:Number,unique:true}
       ,online:Boolean
   });

   //Different schema for same collection "allUsers"        
   var allUser=mongoose.model('allUsers',loginUserSchema);        
   var registerUser=mongoose.model('allUsers',registerUserSchema);

    //Different schema for same collection "checkInOut"
   var checkInOut=mongoose.model('checkInOut',checkInOutSchema);
   var checkInInfo=mongoose.model('checkInOut',checkInInfoSchema);

   module.exports={

       allUser:allUser, 
       registerUser:registerUser,

       checkInOut:checkInOut,
       checkInInfo:checkInInfo
   };

해결법

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

    1.몽구스에서는이 같은 작업을 수행 할 수 있습니다 :

    몽구스에서는이 같은 작업을 수행 할 수 있습니다 :

    var users = mongoose.model('User', loginUserSchema, 'users');
    var registerUser = mongoose.model('Registered', registerUserSchema, 'users');
    

    이 두 스키마는 '사용자의 컬렉션에 저장합니다.

    http://mongoosejs.com/docs/api.html#index_Mongoose-model 또는 당신은 도움이 될 다음의 요점을 볼 수 있습니다 자세한 내용은 당신은 설명서를 참조 할 수 있습니다.

  2. ==============================

    2.내가 선택한 답변을 시도했지만 특정 모델 객체에 쿼리 할 때, 그것은 모두 스키마의 데이터를 검색합니다. 내가 판별 수익률에게 더 나은 솔루션을 사용하여 생각 그래서 :

    내가 선택한 답변을 시도했지만 특정 모델 객체에 쿼리 할 때, 그것은 모두 스키마의 데이터를 검색합니다. 내가 판별 수익률에게 더 나은 솔루션을 사용하여 생각 그래서 :

    const coordinateSchema = new Schema({
        lat: String,
        longt: String,
        name: String
    }, {collection: 'WeatherCollection'});
    
    const windSchema = new Schema({
       windGust: String,
       windDirection: String,
       windSpeed: String
    }, {collection: 'WeatherCollection'});
    
    //Then define discriminator field for schemas:
    const baseOptions = {
        discriminatorKey: '__type',
        collection: 'WeatherCollection'
    };
    
    //Define base model, then define other model objects based on this model:
    const Base = mongoose.model('Base', new Schema({}, baseOptions));
    const CoordinateModel = Base.discriminator('CoordinateModel', coordinateSchema);
    const WindModel = Base.discriminator('WindModel', windSchema);
    
    //Query normally and you get result of specific schema you are querying:
    mongoose.model('CoordinateModel').find({}).then((a)=>console.log(a));
    

    출력 예 :

    { __type: 'CoordinateModel', // discriminator field
        _id: 5adddf0367742840b00990f8,
        lat: '40',
        longt: '20',
        name: 'coordsOfHome',
        __v: 0 },
    
  3. from https://stackoverflow.com/questions/14453864/use-more-than-one-schema-per-collection-on-mongodb by cc-by-sa and MIT license