MongoDB PHP 的库 运行 服务器上的 foreach 命令

MongoDB library for PHP run foreach command on server

我有以下 mongodb

命令
db.products.find().forEach( 
    function(x) {
        db.autocomplete.insert({
            "_id": x.name
        });
        db.autocomplete.insert({
            "_id": x.author_name
        });
    }
);

这基本上为 Autocomplete/Autosuggest 个单词创建了一个集合。

如何使用 PHP 运行 这个命令?库中没有 du forEach 命令的内置函数。

我知道,有http://php.net/manual/de/mongodb.command.php,但我不明白,如何在数组结构运行上面的命令

我没测试过,但肯定是这样的:

    $q = new MongoDB\Driver\Command([
        'mapreduce' => 'products',
        'map' => 'function () { emit(this.name, 1); emit(this.author_name, 1);}', 
        'reduce' => 'function () { return null; }',
        'finalize' => 'function () {return null}',
        'out' => ['reduce' => 'autocomplete']
    ]);

map 将 name 和 author_name 作为具有任意值的键发出。 reduce returns null,因为我们不关心值。 finalize 是可选的。它确保值为空。否则它可能包含一些残留垃圾。