1

Monger をドライバーとして使用して、MongoDB データベースの上に Clojure で Web バックエンドをプログラミングしています。

populate私は Monger が本当に好きですが、Mongoose ドライバーで非常に便利だと思った機能、つまり、クエリで基本結合をエミュレートできるようにする方法が恋しいです。

それはやや次のようになりました:

  MyModel.find()
    .populate("myExternalKey")// put the name of the key to populate; Mongoose knows in which collection to look, because you have registered this property as a Ref 
    .exec();

最初の質問: Monger や Clojure に似たようなものはありますか?

何も見つからなかったので、答えが「いいえ」であると仮定して、これが私がやろうとしていることです。

次の使用法で呼び出されるClojureユーティリティ関数を作成することを考えてmy-populateいます:

(my-populate mydoc
             {:key1 "aCollectionName"
              :key2 {:key3 "anotherCollectionName"
                     :key4 "yetAnotherCollName"}})

whereは、パス、 、およびmydocで他のコレクションへの外部参照を持つ MongoDB ドキュメントを表すマップであり、 を呼び出すと、入力されたドキュメントが返されます (実際には、それを含むチャネルである可能性が高くなります)。(:key1)(:key2 :key3)(:key2 :key4)my-populatecore.async

これを行うための私の戦略は、単純にフィールドごとに 1 つのクエリを作成することです。これは難しいことではありませんが、今はパフォーマンスの考慮事項に関心があります。

この戦略では、パフォーマンスの問題について心配する必要がありますか? それに役立つMongoDBの高度な機能はありますか?

おそらく、Mongoose が舞台裏で何をしているのかを知っている人populateが、私にいくつかの洞察を与えることができます.

4

0 に答える 0