2016-09-09 7 views
-2

MongoDBに関連するデータコンセプトを実装しようとしています。私はユーザーのコレクションと投稿のコレクションを持っています。今、投稿コレクションは、usersコレクションを参照するcreated_byを持っています。しかし、私は関連するデータを検索することができません。以下は、私が持っているスキーマの一部です。MongodbとExpress

{ "posts" 
     { 
      created_by:{ type:mongoose.Schema.ObjectId, ref:'User'}, 
      created_at:{ type:Date,default:Date.now }, 
      text:String 
     } 
} 
{ 
     "users" 
     { 
      username:String, 
      password:String, 
      created_at:{type:Date,default:Date.now} 
     } 
} 
+0

こんにちは、user3894192、そしてStack Overflowへようこそ。関連するデータを取得できないということを少し詳しく説明できますか?データベースにデータの例をいくつか表示することができれば、照会したいデータの組み合わせの例がわかります。また、これまでに試したことを示し、何が機能していないかを説明する必要があります(たとえば、クエリ出力を印刷するなど)。 –

+0

'mongoose'を使用しますか? – malix

答えて

0

http://mongoosejs.com/docs/populate.html非常に素晴らしい例で詳しく説明。私はあなたが今、話が_CREATORフィールドを経由して人を指し、二つのモデルのストーリーと人物を持って

あなたのためにここ
{ 
var personSchema = Schema({ 
    _id  : Number, 
    name : String, 
    age  : Number, 
    stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }] 
}); 

var storySchema = Schema({ 
    _creator : { type: Number, ref: 'Person' }, 
    title : String, 
    fans  : [{ type: Number, ref: 'Person' }] 
}); 

var Story = mongoose.model('Story', storySchema); 
var Person = mongoose.model('Person', personSchema); 

} 

を要点を抽出しています。今

次のんの話を通じて照会しながら_CREATORを移入する:

{ 

Story 
.findOne({ title: 'Once upon a timex.' }) 
.populate('_creator') 
.exec(function (err, story) { 
    if (err) return handleError(err); 
    console.log('The creator is %s', story._creator.name); 
    // prints "The creator is Aaron" 
}); 
} 

しかし、あなたはまた、あなたがそれを正しく取得するために適切に記録を保存していることを確認する必要があります。節約しながら_idを割り当てるだけで済みます。下記参照。

{ 
var aaron = new Person({ _id: 0, name: 'Aaron', age: 100 }); 

aaron.save(function (err) { 
    if (err) return handleError(err); 

    var story1 = new Story({ 
    title: "Once upon a timex.", 
    _creator: aaron._id // assign the _id from the person 
    }); 

    story1.save(function (err) { 
    if (err) return handleError(err); 
    // thats it! 
    }); 
}); 

} 
+0

あなたの答えは私の問題を解決しました。ありがとうございました。 – Shyam

+0

素晴らしい私は助けてくれてうれしいです。私の答えを受け入れてください。 –

関連する問題