关于Django MongoDB中的查询方法总结

我们都知道在mongoDB数据库中的查询语句如下:db.collection.find(query, projection)。但是这在利用django开发过程中并不适用,因为我们需要在modelview层进行一些数据查询,这时这些语句在这里以及不适用了,这里可以参考monoengine官方网站里的查询方法,提取如下:

  1. 直接查询
    user = Users.objects(),这样查询出来的结果是可以直接使用的,username = user.name

  2. 过滤查询
    users = Users.objects(sexy='男'),这样是查询到所有性别为男的用户。
    articles = Article.objects(author__sexy='男'),这样以关键字开头+双下划线+属性是查询作者是男性的文章。

  3. 运算符查询
    young_users = Users.objects(age__lte=18),查询所有年龄小于18岁的用户(注意是双下划线)

    ne – 不等于
    lt – 小于
    lte – 小于或等于
    gt – 大于
    gte – 大于或等于
    not – 不等于
    in – 值存在于列表(应提供值列表)
    nin – 值不存在列表(应提供值列表)
    mod – 其中和是两个提供的值value % x == y x y
    all – 提供的值列表中的每个项目都在数组中
    size – 数据的大小
    exists – 字段存在

  4. 字符串查询
    查询方式和上面一样关键字开头+双下划线+属性

    exact - 字符串字段与值完全匹配
    iexact - 字符串字段与值完全匹配(不区分大小写)
    contains - 字符串字段包含值
    icontains - 字符串字段包含值(不区分大小写)
    startswith - 字符串字段以值开头
    istartswith - 字符串字段以值开头(不区分大小写)
    endswith - 字符串字段以值结尾
    iendswith - 字符串字段以值结尾(不区分大小写)
    match - 执行$ elemMatch,以便您可以匹配数组中的整个文档

  5. 切片查询
    Users.objects(age__lte=18)[:10]查询年龄小于18的前十位用户

  6. 高级查询

    from mongoengine.queryset.visitor import Q
    Users.objects(Q(age__lte=18)&Q(hometown='shanghai')|Q(hometown='beijing'))
    

    查询家乡是上海或北京并且年龄小于18岁的用户

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值