[MONGODB] 몽구스 / MongoDB의 쿼리는 조인 ..하지만 난 SQL 배경에서 온
MONGODB몽구스 / MongoDB의 쿼리는 조인 ..하지만 난 SQL 배경에서 온
나는 테이블을 조인 SQL에서 쿼리를 작성하는 것은 매우 간단합니다, 그래서 나는 SQL 배경에서 오는하지만 난 몽구스 / MongoDB를에 있다는 말이냐 생각
기본적으로 나는 (사용자 컬렉션에서 문서에 매핑)을 Subscriber_ID을 알고
나는 사용자가 너무 속한 나는 그것이 같은 것 SQL pseduo이 작성했습니다 경우 모든 프로젝트와 프로젝트 그룹을 끌어 할
Select
ProjectGroup.title,
Project.Title
FROM
ProjectGroup,
Project,
User
WHERE
User.id = req.body.subscriber_id
AND Project.subscriber_id = User.id
AND ProjectGroup.project_id = Project.id
유형이 스키마 오른쪽으로 매핑하기 때문에 비슷한 몽구스 / MongoDB를 조인 할 수있는 방법이 있어야합니다?
내 스키마 .....
프로젝트 그룹 스키마
var ProjectGroupSchema = new Schema({
title : String
, projects : [ { type: Schema.Types.ObjectId, ref: 'Project' } ]
});
프로젝트 스키마
var ProjectSchema = new Schema({
title : {type : String, default : '', required : true}
, subscribers : [{ type: Schema.Types.ObjectId, ref: 'User' }]
});
사용자 스키마
var UserSchema = new Schema({
first_name : {type: String, required: true}
, last_name : {type: String, required: true}
});
고맙습니다!
해결법
-
==============================
1.당신은 멀리 한 단계입니다!
당신은 멀리 한 단계입니다!
프로젝트 그룹 스키마 :
var ProjectGroupSchema = new Schema({ title : String });
프로젝트 스키마 :
var ProjectSchema = new Schema({ title : {type : String, default : '', required : true}, group : {type: Schema.Types.ObjectId, ref: 'ProjectGroup' }, _users : [{type: Schema.Types.ObjectId, ref: 'User' }] });
사용자 스키마 :
var UserSchema = new Schema({ first_name : {type: String, required: true}, last_name : {type: String, required: true}, subscribing : [{type: Schema.Types.ObjectId, ref: 'Project' }] });
그런 다음 다음을 수행 할 수 있습니다 :
user.findById(req.userId) .populate('subscribing') .exec(function(err, user){ console.log(user.subscribing); })
또는:
project.find({ subscriber : req.userId }) .populate('subscriber') .populate('group') .exec(function(err, projects){ console.log(projects); })
-
==============================
2.더는 MongoDB를 조인이 없습니다. 내가 생각하는이 질문은 좋은 참조입니다 :
더는 MongoDB를 조인이 없습니다. 내가 생각하는이 질문은 좋은 참조입니다 :
MongoDB를하고는 "조인"
요약하면, 다른 전략은 관계형 DB에 조인을 통해 해결 될 문제가 MongoDB를 함께 채택되어야한다. 난 당신이 주로 최종까지이 두 가지 중 하나를 수행 말할 것입니다 :
from https://stackoverflow.com/questions/14363065/mongoose-mongodb-query-joins-but-i-come-from-a-sql-background by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 명시 적으로 이름을 지정하지 않고 MongoDB의에서 모든 필드의 값을 검색 (0) | 2019.12.07 |
---|---|
[MONGODB] MongoDB를 문서의 N 번호를 삭제하는 방법 (0) | 2019.12.07 |
[MONGODB] 리눅스에서 MongoDB를 얻기 원격 연결을 청취하기 (0) | 2019.12.07 |
[MONGODB] 어떻게하여 MongoDB에 대소 문자를 구분하지 쿼리를해야합니까? (0) | 2019.12.07 |
[MONGODB] 동일한 서버에 MongoDB를의 여러 인스턴스 (0) | 2019.12.07 |