PHP通过查询获取MongoDB Ref


PHP get MongoDBRef with query

我想知道是否有一种方法可以执行find()并让Mongo在返回父记录后自动返回关联的引用,而不必运行getDBRef()。

我在PHP文档中没有看到它。我可以很容易地支持使用getDBRef,但它似乎没有那么有效

此外。。。我很惊讶没有办法选择要在链接引用中返回的特定数据。我还可以执行另一个手动查找语句,这样我就可以控制返回的内容……但这样一种更注重性能的方法。

也许我应该改变我的方法,而不是使用PHP库类来查找,而是生成我自己的JavaScript命令并使用MongoCode类来运行它?这样行吗?如果行的话……我想知道它会是什么样子抓伤头部然后前往谷歌

谢谢!

MongoDB不支持联接。数据库引用(DBRefs)只是指一个字段存储引用另一个文档的_id的做法。目前没有特定的服务器端支持,对文档的引用进行水合操作需要另一个查询。一些MongoDB驱动程序有一些方便的方法,所以您不必手动查找。如果您想在给定DBRef的情况下进行自己的find()查找(或使用其他标准查找相关文档),那么它同样有效/高效。

根据您的用例和数据建模,DBRef链接的一个更有效的替代方案可能是将相关数据嵌入为子文档。有关更多示例,请参阅有关模式设计的MongoDB wiki信息。

就性能而言,使用PHP查询比MongoCode(需要在服务器上评估的JavaScript)要好。MongoCode实际上是用于更有限的用途,例如在Map/Reduce函数中。有关该方法的一些潜在限制,请参阅服务器端代码执行。

参考:http://docs.mongodb.org/manual/reference/database-references/

手动引用将另一个文档中一个文档的_id字段保存为引用。然后,您的应用程序可以运行第二个查询来返回相关数据。这些引用对于大多数用例来说都是简单而充分的。

DBRefs是使用第一个文档的_id字段值、集合名称以及(可选)其数据库名称从一个文档到另一个文档的引用。通过包含这些名称,DBRef允许位于多个集合中的文档更容易地与来自单个集合的文档链接。

若要解析DBRef,应用程序必须执行附加查询以返回引用的文档。许多驱动程序都有助手方法,这些方法可以自动形成DBRef的查询驱动程序不会自动将DBRef解析为文档

因此,无论哪种方式,无论您使用哪种类型的引用,都需要自己取消引用。

希望它能有所帮助!