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

时间:2017-10-06 11:09:15

标签: php mongodb mongodb-php

我有mongodb的以下命令

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

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

如何使用PHP运行此命令?对于库中的每个命令,没有内置功能。<​​/ p>

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

1 个答案:

答案 0 :(得分:0)

我还没有对它进行过测试,但它必须是这样的:

    $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返回null,因为我们并不关心值。 finalize是可选的。它确保值为null。否则它可能包含一些残留垃圾。