Mongoose — Force 컬렉션 이름


120

몽구스를 사용하여 데이터베이스와 컬렉션을 만들려고합니다. 내 코드는 다음과 같습니다.

var mongoose = require('mongoose');
    var db = mongoose.connect('mongodb://localhost/testdb');
    var Schema = mongoose.Schema;

    var UserInfo = new Schema({
    username : String,
    password : String 
    });

    mongoose.model('UserInfo', UserInfo);

    var user = db.model('UserInfo');


    var admin = new user();
    admin.username = "sss";
    admin.password = "ee";
    admin.save();

이 코드를 실행할 때 mongoose는 userinfo 대신 UserInfo라는 컬렉션을 만들었습니다. 몽구스에서 컬렉션 이름을 강제하는 방법은 무엇입니까?


14
재미있는 사실 : 몽구스는 복수형 소가 황소라는 것을 알고 있지만 복수형 거위가 거위라는 것은 아닙니다.
— Sean Letendre

답변:


201

그래야 해

var UserInfo = new Schema({
  username : String,
  password : String 
}, { collection: 'userinfo' });

자세한 내용 은 Mongoose 설명서 에서이 링크 를 참조하십시오.


7
감사합니다. 관련 링크는 다음과 같습니다. mongoosejs.com/docs/guide.html#collection
— Jon Page

2
@JonPage에게 감사드립니다. Person 개체 컬렉션이 왜 사람으로 명명되었는지 궁금합니다. 제공 한 링크는 좋은 참조입니다. 스키마를 생성 할 때 커스텀 컬렉션 이름을 설정하는이 방법이 모델 생성시 컬렉션 이름을 정의하는 다른 방법보다 낫다고 생각합니다.
— 바랏

이것은 매우 도움이되었습니다. 나는 지금 뭔가를 쿼리하려고 이틀을 보냈다.
— Holt Mansfield

79

mongoose 2.0.0을 사용하는 경우 collectionName을 세 번째 인수로 전달하십시오.

mongoose.model('UserInfo', UserInfo, 'UserInfo');

모델 수준에서 사용자 지정 컬렉션 이름을 선언하는 완벽한 방법입니다.
— tezqa

25

Mongoose는 기본적으로 컬렉션 이름에 's'를 추가합니다. 이를 피하려면 컬렉션의 이름을 세 번째 인수로 전달하십시오.

var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/testdb');
var Schema = mongoose.Schema;

var UserInfo = new Schema({
    username: String,
    password: String 
});

mongoose.model('UserInfo', UserInfo, 'UserInfo')

tan = new user();
admin.username = 'sss';
admin.password = 'ee';
admin.save();

1
이것이 최선의 제안입니다. 나는 항상 mongoose.model ()에 컬렉션 이름을 전달하는 것이 가장 쉽다는 것을 알았습니다. 몽구스가 컬렉션 이름을 복수화하는 방법을 지적하는데도 좋습니다. 처음 시작할 때 혼란 스러웠습니다.
— John Morrison

14

mongoose.model의 API 구조는 다음과 같습니다.

Mongoose#model(name, [schema], [collection], [skipInit])

mongoose는 컬렉션 인수가 전달되지 않으면 Mongoose는 모델 이름을 복수화하여 컬렉션 이름을 생성합니다. 이 동작이 마음에 들지 않으면 컬렉션 이름을 전달하거나 스키마 컬렉션 이름 옵션을 설정하십시오.

예:

var schema = new Schema({ name: String }, { collection: 'actor' });

또는

schema.set('collection', 'actor');

또는

var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);


9

여기 몽구스 관리자. 을 권장합니다 mongoose.model('UserInfo', UserInfo, 'UserInfo');. 세 번째 인수 mongoose.model()는 컬렉션 이름입니다. 다음은 관련 문서 입니다.


1

대답:

mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name

구문으로 더 나은 설명 :

Mongoose.model(name, [schema], [collection], [skipInit])

매개 변수 설명 :

  • 첫 번째 매개 변수-이름 모델 이름
  • 두 번째 매개 변수 [스키마] 스키마 이름
  • 세 번째 매개 변수 [컬렉션] 컬렉션 이름 (선택 사항, 모델 이름에서 파생 됨)
  • 네 번째 매개 변수 [skipInit] 초기화 건너 뛰기 여부 (기본값 : false)

0

모델 이름 : userInfo.js

급행 경로 파일 또는 app.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/testdb');

그런 다음 userInfo.js에서

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserInfo = new Schema({
 username : String,
 password : String 
});
module.exports = mongoose.model('UserInfo', UserInfo);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.