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-populate
core.async
これを行うための私の戦略は、単純にフィールドごとに 1 つのクエリを作成することです。これは難しいことではありませんが、今はパフォーマンスの考慮事項に関心があります。
この戦略では、パフォーマンスの問題について心配する必要がありますか? それに役立つMongoDBの高度な機能はありますか?
おそらく、Mongoose が舞台裏で何をしているのかを知っている人populate
が、私にいくつかの洞察を与えることができます.