我正在玩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:
答案 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'}
的捷径