152

サンプル ドキュメントに「コンポーネント」を入力するにはどうすればよいですか。

  {
    "__v": 1,
    "_id": "5252875356f64d6d28000001",
    "pages": [
      {
        "__v": 1,
        "_id": "5252875a56f64d6d28000002",
        "page": {
          "components": [
            "525287a01877a68528000001"
          ]
        }
      }
    ],
    "author": "Book Author",
    "title": "Book Title"
  }

これは、Mongoose でドキュメントを取得する私の JS です。

  Project.findById(id).populate('pages').exec(function(err, project) {
    res.json(project);
  });
4

16 に答える 16

357

Mongoose 4.5 はこれをサポートしています

Project.find(query)
  .populate({ 
     path: 'pages',
     populate: {
       path: 'components',
       model: 'Component'
     } 
  })
  .exec(function(err, docs) {});

また、複数の深いレベルに参加できます。

編集 03/17/2021: これはライブラリの実装です。舞台裏で行うことは、別のクエリを作成して取得し、メモリに結合することです。これは機能しますが、私たちは本当に頼るべきではありません。これにより、データベースの設計が SQL テーブルのようになります。これはコストのかかる操作であり、うまくスケーリングできません。結合を減らすように文書を設計してください。

于 2015-12-23T22:58:35.680 に答える
-4

ドキュメント参照を削除

if (err) {
    return res.json(500);
}
Project.populate(docs, options, function (err, projects) {
    res.json(projects);
});

これは私にとってはうまくいきました。

if (err) {
    return res.json(500);
}
Project.populate(options, function (err, projects) {
    res.json(projects);
});
于 2015-03-26T15:47:58.280 に答える