GithubHelp home page GithubHelp logo

Comments (5)

Liudon avatar Liudon commented on June 20, 2024 4

I found the solution. use the "typeMap" option.

<?php

// This path should point to Composer's autoloader
require_once __DIR__ . "/vendor/autoload.php";

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$options = array(
    'typeMap' => array(
        'root' => 'array',
        'document' => 'array',
    ),
);
$collection = new MongoDB\Collection($manager, "db.abc", $options);
$sunnyvale = $collection->findOne(array("id" => 94086));
var_dump($sunnyvale);

?>

from mongo-php-library.

Liudon avatar Liudon commented on June 20, 2024

the method "find" return is object. and "typeMap" option does not work.

from mongo-php-library.

globules-io avatar globules-io commented on June 20, 2024

findOne has always returned an Object while find returns an array. I believe it has always been like this. Otherwise use find with limit 1 to get an array

from mongo-php-library.

jmikola avatar jmikola commented on June 20, 2024

As of 1.0.0-beta2, find() and aggregate() also take a typeMap option, which is applied to the returned cursor. Alternatively, you could call setTypeMap() yourself before iterating.

Furthermore, the Client, Database, and Collection objects can also be constructed with a typeMap option, which will be applied by default to relevant operations within each class (as we already do with write concerns and read preferences). The option is also inherited by selected "children" (e.g. the Database returned from Client::selectDatabase() will inherit the Client's options).

As noted in the 1.0.0-beta2 release notes, we intend to have a more user-friendly default type map, so documents and arrays may be returned as ArrayObjects instead of stdClass and array, respectively. This will allow us to ensure we preserve their BSON types when going back to the database (i.e. object data can be cast back to stdClass and arrays can be filtered through array_values() to be numerically reindexed). This is being tracked in #78 and PHPLIB-74.

from mongo-php-library.

jmikola avatar jmikola commented on June 20, 2024

#78 is merged, so we're now returning ArrayObject instances for BSON document and array types, each of which handle BSON serialization for documents and arrays on the way back into the database. With this change, you can use array access on both types (e.g. $result['field'] or $array[2]) and you should still be able to use property syntax on documents $result->field, provided some BC for people that have now gotten used to working with stdClass instances.

Expect a 1.0.0 release with these new defaults soon.

from mongo-php-library.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.