什么是"包容性" mongo聚合框架中的模式?

时间:2013-06-24 14:17:59

标签: mongodb aggregation-framework

我正在玩mongo聚合框架,我根本无法找出一些术语。最特别的是,在一些示例中,引用$项目处于“包容模式”。我也听说过_id在相关背景下被选为“隐含”。任何人都可以澄清吗?

http://docs.mongodb.org/manual/reference/aggregation/project/

db.article.aggregate(
    { $project : {
        title : 1 ,
        stats : {
            pv : "$pageViews",
            foo : "$other.foo",
            dpv : { $add:["$pageViews", 10] }
        }
    }}
);


This projection includes the title field and places $project into “inclusive” mode. Then, it creates the stats documents with the following fields:

1 个答案:

答案 0 :(得分:1)

  

_id被选中“implicity”

进行投影时,必须明确指定所有字段:

> db.a.find()
{ "_id" : ObjectId("51c8744a1c0a41d783d77431"), "a" : 1, "b" : 2, "c" : 3 }
> db.a.aggregate({$project:{a:1}})
{
    "result" : [
        {
            "_id" : ObjectId("51c8744a1c0a41d783d77431"),
            "a" : 1
        }
    ],
    "ok" : 1
}

此处您只在结果文档中包含“a”,其他所有字段都已删除。唯一的区别是 _id 字段,它始终包含在内,但您可以明确地将其关闭:

> db.a.aggregate({$project:{a:1, _id:0}})
{ "result" : [ { "a" : 1 } ], "ok" : 1 }
  

$ project处于“包容模式”

这很简单:如果您希望某些字段包含在结果文档按原样中,您只需键入类似 {a:1} 的字段,它只是说 {a:'$ a'}

的捷径