Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用查询获取MongoDBRef_Php_Mongodb_Mongodb Php - Fatal编程技术网

PHP使用查询获取MongoDBRef

PHP使用查询获取MongoDBRef,php,mongodb,mongodb-php,Php,Mongodb,Mongodb Php,我想知道是否有一种方法可以执行find()并让Mongo在返回父记录后自动返回关联的引用,而不必运行getDBRef() 我在PHP文档中没有看到它。我可以很容易地支持使用getDBRef,但它似乎没有它可能的那么有效 还有…我很惊讶,在链接引用中无法选择要返回的特定数据。我也可以只执行另一个手动find语句,这样我就可以控制返回的内容……但必须有一种更面向性能的方法来实现这一点 也许我应该改变我的方法,而不是使用PHP库类进行查找,生成我自己的JavaScript命令并使用MongoCode类

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

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

还有…我很惊讶,在链接引用中无法选择要返回的特定数据。我也可以只执行另一个手动find语句,这样我就可以控制返回的内容……但必须有一种更面向性能的方法来实现这一点

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


谢谢

MongoDB不支持联接。仅指存储引用另一文档的
\u id
字段的做法。目前还没有特定的服务器端支持,而要将对文档的引用添加到中需要另一个查询。有些方法很方便,因此您不必手动查找。如果您希望自己执行
find()

根据您的用例和数据建模,DBRef链接的一个更有效的替代方法是将相关数据作为子文档嵌入。有关更多示例,请参见上的MongoDB wiki信息


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

MongoDB不支持连接。仅指存储引用另一文档的
\u id
字段的做法。目前还没有特定的服务器端支持,而要将对文档的引用添加到中需要另一个查询。有些方法很方便,因此您不必手动查找。如果您希望自己执行
find()

根据您的用例和数据建模,DBRef链接的一个更有效的替代方法是将相关数据作为子文档嵌入。有关更多示例,请参见上的MongoDB wiki信息

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

请参阅:

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

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

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

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

希望有帮助

参考:

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

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

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

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

希望有帮助