1

在 mongo shell 或 PHP 中,我如何检索此文档的“列表”属性?

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

我正在寻找如何做 db.tags.list 将返回 mycollection 中文档的所有“列表”属性

答案是:db.tags.findOne().list

4

2 回答 2

0

如果您想直接访问您的文档:

document['list']

如果您正在访问一个集合:

db.collection.findOne({_id: ObjectId("51b972ebe4b075a9690bbc5b")}).list
于 2013-06-13T16:59:48.563 回答
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;
    }
}

顺便说一下,如果这些文档有您不需要的其他字段,您可以使用第二个参数来提供投影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 回答