コレクション内のすべてのドキュメントのすべてのlist属性が必要な場合は、 db.collection.find()メソッド ( PHP ではMongoCollection::find() )を使用できます。tags
$tags = array();
foreach ($collection->find() as $document) {
if (empty($document['list'] || ! is_array($document['list'])) {
continue;
}
foreach ($document['list'] as $tag) {
$tags[] = $tag;
}
}
これらのドキュメントに不要なフィールドが他にある場合は、2 番目の引数を使用して射影を提供し、find()返されるフィールドを制限することができます。この場合、{ list: 1 }それを行います。
これをさらに一歩進めるとlist、コレクションのドキュメント内のフィールド全体で一意のタグをすべてすばやく取得したい場合は、distinctデータベース コマンド ( PHP ではMongoCollection::distinct() )を使用できます。
コレクションに次のドキュメントがあると仮定します。
> db.foo.insert({x:['a','b','c']})
> db.foo.insert({x:['a','c','d']})
次のメソッドはdistinctデータベース コマンドを実行し、配列を返します[ "a", "b", "c", "d" ]。
$uniqueTags = $collection->distinct('list');