为Monger实现类似Mongoose的填充:性能考虑因素

时间:2014-10-06 23:36:39

标签: mongodb clojure mongoose query-performance monger

我使用Monger作为驱动程序在MongoDB数据库的Clojure上编写Web后端。

我真的很喜欢Monger,但是我错过了一个我发现在Mongoose驱动程序中非常有用的功能:populate方法使我能够在查询中模拟基本连接。

有点像这样:

  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有什么类似的东西吗?

我没有找到,所以假设答案是否定的,这就是我打算做的事情。

我正在考虑使用名为my-populate的Clojure实用程序函数,其用法如下:

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

其中mydoc是表示MongoDB文档的地图,其中包含对路径(:key1)(:key2 :key3)(:key2 :key4)中其他集合的外部引用,并且调用my-populate会返回填充的文档(好吧,更有可能是一个包含它的core.async频道来说实话。)

我这样做的策略只是为每个字段进行一次查询,这并不难,但现在我关注性能方面的考虑。

我应该担心此策略的性能问题吗?是否有一些MongoDB高级功能可以帮助它?

也许有人知道Mongoose的populate在幕后所做的事情可以给我一些见解。

0 个答案:

没有答案