2016-10-17 7 views
1

文書内の配列を巻き戻そうとしています。ここでMongoDB unwindコマンド

{ //document 
    ... 
    parameters : [{...}, {...}, ...] 
} 

は作業コマンドです:

db.getCollection('inventory').aggregate([ 
    { $unwind : "$parameters" } 
]); 

私は、同じタスクを行うにdb.runCommandを使用しようとしている:

db.runCommand({ 
    aggregate: "inventory", 
    pipeline: [{ $unwind: "$parameters" }] 
}); 

をしかし、この第二のオプションで、私は取得していますこのエラー:

aggregation result exceeds maximum document size (16MB)

これらのコマンドは同じではありませんか?なぜ2番目のものが動作していないのですか?

私はPHP 7用のMongo PHP Driverを使用しています。そのため、私はこのように集約しています。

+1

[allowDiskUse](https://docs.mongodb.com/v3.2/reference/method/db.collection.aggregate/)をtrueに設定すると、おそらく問題が解決されます。それにもかかわらず、なぜそれがrunCommandでのみ起こるのはよい質問です。 – joao

答えて

0

db.runCommand結果を1つのドキュメントに返します。したがって、すべての集計結果は16MBを超えています。 batchSizecursorに設定すると問題が解決する場合があります。

MongoDB::executeを使用すると、私はこの方法でクエリを実行できます:db.collection.aggregate(...元のmongo構文をそのまま通過します。

関連する問題