$in: 和sql中的in一样
cursor = models.UserGroup.aggregate([
MatchStage(params),
LookupStage(Group, 'groupID', '_id', 'group'),
MatchStage({'group.status': GROUP_STATUS_ACTIVATED}),
UnwindStage('group')])
cusor:光标
aggregate:聚合函数
Match:筛选,相当于where
Lookup:join
unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
需求:
{
"_id" : ObjectId("5951c5de567ebff0d5011fba"),
"name" : "陈晓婵",
"address" : "北京朝阳区",
"weekday" : [
1,
2,
3,
4,
5
]
}
对weekday进行拆分:
db.getCollection('chenxiaochantest').aggregate(
[
{
$unwind:"$weekday"
}
]
)
拆分结果:
/* 1 */
{
"_id" : ObjectId("5951c5de567ebff0d5011fba"),
"name" : "陈晓婵",
"address" : "北京朝阳区",
"weekday" : 1
}
/* 2 */
{
"_id" : ObjectId("5951c5de567ebff0d5011fba"),
"name" : "陈晓婵",
"address" : "北京朝阳区",
"weekday" : 2
}
/* 3 */
{
"_id" : ObjectId("5951c5de567ebff0d5011fba"),
"name" : "陈晓婵",
"address" : "北京朝阳区",
"weekday" : 3
}
/* 4 */
{
"_id" : ObjectId("5951c5de567ebff0d5011fba"),
"name" : "陈晓婵",
"address" : "北京朝阳区",
"weekday" : 4
}
/* 5 */
{
"_id" : ObjectId("5951c5de567ebff0d5011fba"),
"name" : "陈晓婵",
"address" : "北京朝阳区",
"weekday" : 5
}