2013-06-26 5 views
1

나는 두 스키마가 :몽구스 (Mongoose) - 채우기의 깊이를 제한하는 방법은 무엇입니까?

var categorySchema = mongoose.Schema({ 
    title: String, 
    blogs: [{ type: ObjectId, ref: 'Blog' }] 
}) 

var blogSchema = mongoose.Schema({ 
    title: String, 
    description: String, 
    category: [{ type: ObjectId, ref: 'Category' }], 
    created: {type: Number, default: new Date().getTime()} 
}) 

var Category = mongoose.model('Category', categorySchema) 
var Blog = mongoose.model('Blog', blogSchema) 

그들은 교차 참조됩니다

  1. 블로그 객체가이 블로그가 관련되어있는 모든 범주를 얻을 수 있도록 Category 객체 (심판)의 배열을 포함 .
  2. 범주 개체에는 Blog 개의 개체 (참조) 배열이 포함되어이 범주의 모든 블로그를 가져올 수 있습니다.

문제는 내가 특정 블로그를 얻으려고 할 때입니다.

{ title: 'My Blog', 
    description: 'description',, 
    _id: 51cb6bd845ba145e02000001, 
    __v: 0, 
    created: 1372285906662, 
    category: 
    [ { __v: 0, 
     _id: 51cb5ed6fd63867905000002, 
     priority: 3, 
     title: 'Music', 
     blogs: [Object] } ], 
} 

그래, 나는 카테고리 타이틀을 얻을 ... 내가 얻을

Blog 
    .findOne({_id: _._id}) 
    .populate('category') 
    .exec(function (err, __) { 
     callback(err, __); 
    }) 

, 그러나 나는 또한 블로그에서 일부 개체를 얻을 수 - 그들은 또한 인구가 있었다 : 나는 제목의 얻을 카테고리의 배열을 채울 필요 . 그러나 블로그 객체에는 많은 서브 객체 (게시물) 이 포함될 수 있으며 category 필드을 기억합니다. 그래서, 범주 필드의 모든 개체는 반복적으로 채워질 것이며 블로그와 범주 사이에 교차 링크가 있으므로 루프로 채워지겠습니까?

인구 수준을 제한하는 방법은 무엇입니까? 블로그/카테고리 [n]/blogs: []을 입력하고 싶지 않으므로 title과 같은 category 필드 만 직접 입력하면됩니다. 감사. mongoose docs에서

답변

2

:

그것은 그들이 동기화 얻을 수 있기 때문에 우리가 정말 포인터의 두 세트를 원하는 논쟁의 여지가있다. 대신 우리는 채우기 건너 뛸 수 있고 직접 (찾기) 이야기를 우리가에 관심이 있습니다.

나는 카테고리 스키마에 블로그의 참조를 제거 할 것이며, 당신이 관심있는 문서를 쿼리합니다.

는 "블로그 객체 분류 객체 (심판)의 배열이 블로그가 관련되어있는 모든 범주를 얻을 수있을 것 포함"

Blog.findOne({_id: blogId}) 
    .populate('category') 
    .exec(function (err, blog) { 
     callback(err, blog); 
     //blog.category is the array you want 
    }) 

"카테고리의 객체가 블로그 객체의 배열을 포함 (심판관) 이 범주 "의 모든 블로그를 얻을 수있을합니다 :

Blog.find({category: catId}) 
    .exec(function (err, blogs) { 
     callback(err, blogs);       
    }) 

이 실제로 지정된 ID에 대한 카테고리의 배열 내에서 검색하는 $all query의 단순화 된 구문입니다.

관련 문제