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.