在 mongo shell 或 PHP 中,我如何检索此文档的“列表”属性?
{
"_id" : ObjectId("51b972ebe4b075a9690bbc5b"),
"list" : [
"Environnement",
"Toutes thématiques",
"Transports"]
}
我正在寻找如何做 db.tags.list 将返回 mycollection 中文档的所有“列表”属性
答案是:db.tags.findOne().list
如果您想直接访问您的文档:
document['list']
如果您正在访问一个集合:
db.collection.findOne({_id: ObjectId("51b972ebe4b075a9690bbc5b")}).list
如果您需要集合中所有文档的所有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');