コレクション内のすべてのドキュメントのすべての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');