指定返回格式

时间:2015-04-25 20:59:29

标签: mongodb projection

mongo中是否有一种方法可以指定我希望数据返回的格式?

如果可能的话,我希望能够将项目作为数组返回。让我们看一下这个非常基本的例子:

<a class="truncate">This text is truncated</a>

因此,对于此示例,我希望将上述文档作为数组:

{
    color: red
},
{
    color: white
},
{
    color: blue
}

有没有办法指定如何退货?我知道我可以指定要获取哪些列,但是我必须遍历它们来构建数组。我希望mongodb内置它,因为它可能比node,php,java等更快。

1 个答案:

答案 0 :(得分:2)

使用 aggregation framework 。聚合管道只需要$group操作,$addToSet运算符将值添加到数组中。例如,对于具有样本文档的集合:

/* 1 */
{
    "_id" : ObjectId("553c0101dddf8dcf96bdcdea"),
    "color" : "red"
}

/* 2 */
{
    "_id" : ObjectId("553c0101dddf8dcf96bdcdeb"),
    "color" : "white"
}

/* 3 */
{
    "_id" : ObjectId("553c0101dddf8dcf96bdcdec"),
    "color" : "blue"
}

以下聚合

db.collection.aggregate([
    {
        "$group": {
            "_id": 0,
            "colors": {
                "$addToSet": "$color"
            }
        }
    },
    {
        "$project": {
            "_id": 0,
            "colors": 1
        }
    }
])

将产生所需的输出:

/* 1 */
{
    "result" : [ 
        {
            "colors" : [ 
                "blue", 
                "white", 
                "red"
            ]
        }
    ],
    "ok" : 1
}