遇到的一些问题和解决办法
1. Get&Filter
众所周知,Get方法找到0个或多个文档是,都会报错。实际应用中,如果接口以每秒数十次的频率请求,并包含许多get方法出错的情况,最终会导致nginx 502.
但是get方法对于字段的变更真的太好用了~
2. filter
- 字段间的层级关系,用双下划线 __
- 并列过滤,或关系:
- 使用
filter( Q(name__icontains=search_key) | Q(description__icontains=search_key) | Q(owner__icontains=search_key))
- 导入Q
from mongoengine.queryset.visitor import Q
- 计数
total = XXX.objects.filter(name__icontains=search_key).count()
- 排序
queryset = XXX.objects.order_by('-id')
- 分页的实现
queryset = XXX.objects.order_by('XX').skip(offset).limit(limit)
- 使用