1
$posts = $collection->find();

各投稿が参照されているカテゴリをどのようにロードする必要がありますか?

//1 Document from $posts
{
   "_id": ObjectId("502803b6d4ebdfd805000032"),
   "title": "abcd",
   "message": "abc",
   "category": {
     "$ref": "categories",
     "$id": ObjectId("5027e15dd4ebdfd80500001e") 
  }
}

//the document in categories referenced from the post above
{
   "_id": ObjectId("5027e15dd4ebdfd80500001e"),
   "name": "miscellaneous",
   "slug": "miscellaneous",
   "description": "",
   "created_at": ISODate("2012-08-12T17: 01: 17.0Z"),
   "updated_at": ISODate("2012-08-12T19: 27: 50.0Z") 
}
4

1 に答える 1

1

Mongoには、サーバー側の「熱心な」読み込みはありません。

そのため、関連するレコードをロードするには、投稿カーソルを繰り返し処理し、関連するドキュメントを手動でクエリします。

「遅延」読み込み全体について心配する必要はありません。Mongoでは問題ありません。

さまざまな未知の状況のた​​めにサーバーの負担を少し軽減したい場合は、_id使用する配列を収集する必要がある投稿を最後まで繰り返すことができます。その後、すべてを1つのクエリで取得して、それらのカテゴリを元に戻し、並べ替えます。必要に応じて。

私が正直に言うと、DBRefはあなたが思っているものではなく、実際にMongoで必要になることはめったにありません。通常ObjectId、他の行に関連することは問題なく機能します。

DBRefが実際に行うのは、関連するレコードを簡単かつ簡単に取得できるようにするためのオブジェクトを提供することだけです。http : //php.net/manual/en/class.mongodbref.phpコレクションを知っています。これは、関連する多くのコレクションの自己記述型IDと考えてください。

于 2012-08-12T21:28:48.667 に答える