mongodb实战之查询

目前我们项目用的是2.6版,有点低了...所以遇到了很多的坑,在此和大家分享一下,大家共勉,同时也巩固一下知识

基础

  • mongodb严格区分字符串和数字,如果mongodb中存的是字符串,查询时必须是字符串,如果是数字,需要强制转一下
$project['student_status_res'] = [
    '$and' => [
        [
            '$eq' => ['$student_status_id', 100,]
        ],
        [
            '$lte' => ['$created', $endTime]
        ],
        [
            '$or' => [
                [
                    '$eq' => ['$end_date', '0000-00-00 00:00:00']
                ],
                [
                    '$gte' => ['$end_date', $endTime]
                ]
            ],
        ],
    ]
];

管道(aggregate)

$match只能实现一些简单的搜索条件,如果搜索条件比较复杂,需要在$project中转换一下
  
  
  • $project 可以判断当前集合中的某一列是否符合条件
$project['student_status_res'] = [
    '$and' => [
        [
            '$eq' => ['$status', "3"]
        ],
        [
            '$gte' => ['$retreat_time', $startTime]
        ],
        [
            '$lte' => ['$retreat_time', $endTime]
        ],
    ]
];
    
    
  • '$substr'截取指定长度的字符
'one_category_id' => ['$substr' => ['$category_level', 0, 32]],
  • $match类似于mysql的where条件,返回满足条件的数据
  • $in查询数组格式为0开始的索引数组,建议可以通过array_values重新排一下索引

排序(按修改时间降序排)

'$sort' => [
    'modified' => -1,
],

分页(分页前有必要排一下序,否则可能导致显示的数据混乱,踩过坑。。)

[
    '$skip' => (int)$offset,
],
[
    '$limit' => (int)$pageSize,
],
      
      
  • $skip 跳过指定数量的数据
  • $limit 每页显示的条数



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值