【问题标题】:Query With Projection In MongoDB, PHP Syntax?在 MongoDB 中使用投影进行查询,PHP 语法?
【发布时间】:2013-04-14 06:27:28
【问题描述】:

什么是 php 语法,它将完成以下 mongodb Shell 所做的工作?

> db.SoManySins.find({},{"_id":0,"FactoryCapacity":1})

【问题讨论】:

    标签: mongodb mongodb-php


    【解决方案1】:

    MongoDB PHP 驱动程序函数的命名与它们的 shell 对应函数相似,因此在本例中您将使用 MongoCollection::find()。 PHP 驱动程序使用关联数组将字段映射到 MongoDB 查询。

    由于 PHP MongoCollection::find() 文档页面当前不包含投影示例,为了完整起见,我在下面添加了一个示例:

    <?php
        $m = new MongoClient();
        $db = $m->selectDB('test');
        $collection = new MongoCollection($db, 'SoManySins');
    
        // Search criteria
        $query = array();
    
        // Projection (fields to include)
        $projection =  array("_id" => false, "FactoryCapacity" => true);
    
        $cursor = $collection->find($query, $projection);
        foreach ($cursor as $doc) {
            var_dump($doc);
        }
    ?>
    

    对于投影规范,您可以使用 mongo shell 中的 1/0(包含/排除)或等效的真/假常量。

    阅读 PHP MongoDB 驱动程序文档中的 Tutorial 以及查看 10gen 网站上的一些 archived presentations 非常值得。

    【讨论】:

    • 原来这是收藏的组成方式,我错过了。所有旧文档(在 Google 搜索的第 2 页和第 3 页上显示的内容?哦,是的,很有用。希望它永远不会消失。)对,上面的示例很好,我让脚本在少数几个中工作分钟。这是另一根羽毛和一颗珠子!
    • 注意:新的 PHP 扩展 mongodb 与旧的已弃用的 mongo PHP 扩展具有不同的 API。
    【解决方案2】:

    如果您将MongoDB driverMongoDB PHP library 结合使用

    require 'vendor/autoload.php'; // include Composer's autoloader
    
    $client = new MongoDB\Client("mongodb://localhost:27017");
    
    $result = $client->your_database_name->SoManySins->find(array(),array('projection' =>array('_id'=>FALSE,'FactoryCapacity' => TRUE)));
    
    foreach ($result as $entry){
        echo "<pre>";
        print_r($entry);
        echo "</pre>";
    }
    

    【讨论】:

    • 首先应该提到我喜欢这个回复,但更重要的是它现在不允许投影的 TRUE 和 FALSE 值。只能是一种值类型,Truthy 或 Falsy 不能两者兼而有之。'MongoDB\\Driver\\Exception\\CommandException: Projection cannot have a mix of inclusion and exclusion
    猜你喜欢
    • 2020-02-11
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多