MongoDB 学习笔记

目前已见的操作符

聚合操作符

$match

用于过滤数据,只输出符合条件的文档。
$match使用MongoDB的标准查询操作

$sort

将输入文档排序后输出

{'$match': {'birthday': {'$gt': birthday_start}}}
{'$match': {'birthday': {'$lt': birthday_end}}}
{'$match': {'age': {'$gte': age_list[0]}}}
{'$match': {'year': year}}
{'$match': {'user_id': int(user_id)}}
{'$sort': {sorts.replace('-', ''): -1}}

$skip

在聚合管道中跳过指定数量的文档,并返回余下的文档。

$limit

用来限制MongoDB聚合管道返回的文档数。

$project

修改输入文档的结构。
可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
其中可以将0/1视为布尔显示的设置

{'$skip': (page - 1) * page_size},
{'$limit': page_size},
{'$project': 
    {
       '_id': 0, 
       'user_id': 1, 
       'company': 1, 
       'name': 1, 
       'gender': 1,
       'birthday': 1, 
       'last_check_time': 1, 
       'last_check_score': 1
    }
}

$group

将集合中的文档分组,可用于统计结果。

$min

$max

获取集合中所有文档对应值得最小/大值。

            {'$group': {'_id': 'null',
                        'min': {'$min': '$last_check_score'},
                        'max': {'$max': '$last_check_score'}}},
            {'$project': {'_id': 0, 'min': 1, 'max': 1}}]

$unwind

Deconstructs an array field from the input documents to output a document for each element. Each output document is the input document with the value of the array field replaced by the element.

从含有数组的输入文档解构并输出文档中的每个元素,每个输出文件含有输入文档中被元素替换数组的值。
输入文档中若有数组,其中的值会解构为元素并被替换掉,然后输出。

            {'$unwind': '$tree_score.个体健康.children'},
            {'$project': {'_id': 0,
                          'name': '$tree_score.个体健康.children.name',
                          'score': '$tree_score.个体健康.children.value',
                          'children': '$tree_score.个体健 康.children.children'}},
            {'$project': {'children.children': 0}}]

如果取出的文档的嵌套逻辑足够复杂,可以尝试多次使用$project来筛选文档的结果集,这样做亦可以提高查询效率

全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务