mongoengine数据查询

模型示例:

class Address(EmbeddedDocument):
    country = StringField(require=True)
    
class User(Document):
    email = StringField(required=True)
    first_name = StringField(max_length=50)
    last_name = StringField(max_length=50)
    address = ListField(EmbeddedDocumentField(Address))
   
class Post(Document):
    title = StringField(max_length=120, required=True)
    author = ReferenceField(User)
    tags = ListField(StringField(max_length=30))
  1. 简单查询
Post.objects(title='python')   查看title等于python的post
Post.objects(title__icontains='python')    忽略大小写,title中包含python的post
Post.objects(title__contains='python')     不忽略大小写

字符串类型匹配:

  • exact – 精确匹配
  • iexact – 精确匹配,但是忽略大小写
  • contains – 包含
  • icontains – 包含,忽略大小写
  • startswith – 匹配开头
  • istartswith – 匹配开头,忽略大小写
  • endswith – 匹配结尾
  • iendswith – 匹配结尾,忽略大小写
  • match – performs an $elemMatch so you can match an entire document within an array

数值型匹配:

  • ne – 不等于
  • lt – 小于
  • lte – 小于等于
  • gt – 大于
  • gte – 大于等于
  • not – negate a standard check, may be used before other operators (e.g.Q(age__not__mod=(5, 0)))
  • in – 属于
  • nin – 不属于
  • mod – value % x == y, where x and y are two provided values
  • all – every item in list of values provided is in array
  • size – 计算arry的大小
  • exists – 字段的值是否存在

2.关联查询

  • Fields on embedded documents
User.objects(address__country='USA')       # 查询地址中的国家名字等于USA的用户
User.objects(address__country__icontains='USA')    # 查询地址中的国家名字包含USA的用户

3.list字段查询

Post.objects(tags='python')     # 查询tags中包含python的post
Post.objects(tags__0='python')     # 匹配tags中第一个值为python的post

4.原始查询语句

Post.objects(__raw__={"tags": 'python'})     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值