API http://mongoosejs.com/docs/populate.htmlを確認して、試してみました。 populate
は外国の_id
のみ機能するようです。 match
オプションがある場合でも、 _id
クエリ条件にフィルタリング条件を追加するだけです。 _id
関係のないフィールドだけを入力する方法はありません。
私のプロジェクトでは、 _id
をObjectIdとして保持し、自動インクリメント番号として別のフィールドを持っています。 たとえば、 customers
モデルには、オブジェクトとして_id
があり、増分番号としてcuid
があります。 他のコレクションは、 _id
ではなくcuid
参照しているだけです。
これをカスタマイズできるのは素晴らしいことですか?
この機能が欠落している原因となる設計上の制限はありますか?
これをカスタマイズできるのは素晴らしいことですが、今は_id
ます。 でも、頭のてっぺんから正当な理由を考えることはできません。 さらに調査する必要があります。
シャーディングを適切にサポートするには、他の1つのフィールドだけでなく、一連のフィールドにもデータを入力する機能がほぼ必要です。これは、私たちにとって大きなユースケースです。
たとえば、「subscription」のシャードキーを持つ可能性のあるコレクション「students」があります。 セクションモデル(学生の配列を含む)から学生データを入力すると、ドキュメントにサブスクリプションがありますが、マップするように指定するのではなく、「student」に格納されている_idに基づいてのみ検索されます。学生の「割り当て」へのドキュメントの「割り当て」フィールド。
次に、データの入力時にシャードキーなしでルックアップを実行するため、シャーディングが役に立たなくなり、データを取得するために1つではなくすべてのシャードを押す必要があります。
これは、私たちがどこで仕事をするかについてのガイダンスを得ることができれば、私たちが開発に資金を提供したり、自分たちでやったりすることをいとわないものです。 それは私たちの会社(GradeCam)の大きなニーズです。
@taxilianはshardKey
スキーマオプションを設定していますか? そのオプションの目的はAFAIKです。
私はこの問題の解決策を探していたので、実際にはまだそれを始めようとはしていません。 PopulateはshardKeyを考慮に入れていますか? 私の理解では、shardKeyは更新と挿入にのみ影響しました
「参加」するフィールドを指定できると便利です。たとえば、userId(つまり、_id)フィールドだけでなく、userType、userGroupなどでも入力できるようにしたいと思います。
ありがとう!
+1
+1は非常に便利です
ここで同じ+1!
+1これが大好き
+1
+1
+1
key
などのパラメーターを追加することで、入力する変数を選択できると特に便利です。
たとえば、のauthor
comments
パラメーターと
{
author: "user1",
comments:["comment5", "comment6"],
title:"Post1"
}
「key」のようなパラメータを追加して、検索するパラメータをmongoに知らせることができると便利です。
Posts.find().populate([{path:"author", model:"Users", key:"username"}, {path:"comments", model:"Comments", key:"title"}])
これにより、 author
パラメーターにユーザー名で見つかったユーザーが入力され、 comments
パラメーターにタイトルで見つかったコメントが入力されます(タイトルごとのコメントは少し非現実的ですが、ポイント)。
+1
+1
+1
+1
+1
+1
+1
大いに同意します。 カスタムの母集団スキームを定義できる機能が欲しいです。 これは、ファイルパスである1つ以上のフィールドを持ち、データをストレージから読み取ることができるスキーマに最適です。
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
次のコードを試してください: https :
実際、Alexのコードをメインリポジトリにマージせず、これをコア機能にする理由はありますか?
@rturk指摘してくれてありがとう、私はそのプラグインが本当に好きです。 @alexmingoiaモジュールをマングースコアにマージすることについてどう思いますか? より一般的な処理するためにvirtualsをを使用してのアイデア移入を(デシベルに永続化、実際のフィールドを持たない)は本当に強力です。
それが理想的です。 Query.prototype.populate
やその他のコア機能をオーバーロードするため、コアの方がはるかに優れています。
プルリクエストの作成を妨げる唯一のことは、テストカバレッジがほとんどまたはまったくなく、ドキュメントが不足していることです。 私はそれを複数のシナリオで本番環境で使用しており、安定していますが、誰かがテストスイートを作成した場合、文書化する必要のあるいくつかの小さな問題や特異性が明らかになる可能性があると思います。
誰かがテストスイートに取り組む気がありますか? そうでない場合-私はそれを行うことができますが、来月までに着陸することは期待していません。
見てみます。 私はとにかくpopulateを書き直す
コードについて質問がある場合は、IRC(freenode、 amingoia
)またはgitterでpingしてください。
https://github.com/whitecolor/mongoose-fillは、他のモデルのデータを使用してデータを入力するのにも最適です
+1
+1
+1
これは必須です:)
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+3
+1
最も参考になるコメント
@rturk指摘してくれてありがとう、私はそのプラグインが本当に好きです。 @alexmingoiaモジュールをマングースコアにマージすることについてどう思いますか? より一般的な処理するためにvirtualsをを使用してのアイデア移入を(デシベルに永続化、実際のフィールドを持たない)は本当に強力です。