1

我正在使用 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"}})

wheremydoc是一个表示 MongoDB 文档的映射,该文档在 paths和(:key1),和调用中返回其他集合的外部引用(嗯,更可能是一个包含它的通道,说实话)。(:key2 :key3)(:key2 :key4)my-populatecore.async

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

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

也许知道猫鼬populate在幕后做什么的人可以给我一些见解。

4

0 回答 0