1

mongo シェルまたは PHP で、このドキュメントの「リスト」属性を取得するにはどうすればよいですか?

{
"_id" : ObjectId("51b972ebe4b075a9690bbc5b"),
"list" : [
"Environnement",
"Toutes thématiques",
"Transports"]
}

db.tags.list が mycollection 内のドキュメントのすべての「リスト」属性を返す方法を探しています

答えは: db.tags.findOne().list

4

2 に答える 2

0

コレクション内のすべてのドキュメントのすべての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');
于 2013-06-27T15:21:17.383 に答える
0

ドキュメントに直接アクセスする場合:

document['list']

コレクションにアクセスしている場合:

db.collection.findOne({_id: ObjectId("51b972ebe4b075a9690bbc5b")}).list
于 2013-06-13T16:59:48.563 に答える