많은 객체에 대해 mongo db를 쿼리하는 가장 좋은 방법은 궁금합니다. 각 객체에는 _id의 배열이 첨부되어 있습니다. 나는 참조 된 객체들도 가져 가고 싶다. 객체 '스키마는 다음과 같습니다 mongo : 여러 개의 검색어가 필요하지 않습니까?
var headlineSchema = new Schema({
title : String,
source : String,
edits : Array // list of edits, stored as an array of _id's
...
});
... 그리고 필요한 경우, 참조 된 것 하나
: 문제의var messageSchema = new Schema({
message : String,
user : String,
headlineID : ObjectId // also contains a ref. back to headline it's incl. in
...
});
한 부분 (나는이를 계속하려면 잘 따라 내 쿼리를 수행 할 때
db.headline.update({_id : headlineid}, {$push: {edits : messageid} }, true);
, 나는 한 번에 약 30 '헤드 라인'을 잡아해야하고, 각각의 : 경로) 메시지 ID의이 (편집 작동하지 밀어 것은 하늘의 배열 [] 이후)를 유지하다 하나는 심판을 포함 할 수있다. 최대 20 개 또는 30 개의 '메시지'에 도달합니다. 제 질문은 이러한 모든 것을 가져 오는 가장 좋은 방법은 무엇입니까? 나는 mongo가 관계형 데이터베이스가 아니라는 것을 알고 있습니다. 그래서 내가 원하는 것은 먼저 필요한 헤드 라인을 잡은 다음 첨부 된 모든 메시지를 얻기 위해 30 개 모두를 반복하는 것입니다.
db.headline.find({'date': {$gte: start, $lt: end} }, function (err, docs) {
if(err) { console.log(err.message); }
if(docs) {
docs.forEach(function(doc){
doc.edits.forEach(function(ed){
db.messages.find({_id:ed}, function (err, msg) {
// save stuff
});
});
});
}
});
이것은 잘못된 것처럼 보이지만 진행 방법을 잘 모르겠습니다. 첨부 된 메시지를 계속 보관해야합니까? 나는 내 스키마를 설정 한 방식과 결혼하지 않았다. 이들 간의 관계를 추적하는 더 좋은 방법이 있거나 더 좋은 쿼리가 있으면이를 알려주십시오. 감사