我正在使用 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-populate
core.async
我这样做的策略只是对每个字段进行一次查询,这并不难,但现在我关心的是性能方面的考虑。
我应该担心这种策略的性能问题吗?是否有一些 MongoDB 高级功能可以帮助它?
也许知道猫鼬populate
在幕后做什么的人可以给我一些见解。