美文网首页
mongo学习文档 --- 2023-04-18

mongo学习文档 --- 2023-04-18

作者: 一位先生_ | 来源:发表于2023-04-23 13:02 被阅读0次

    mongodb中文官方文档:https://docs.mongoing.com/

    将mongo中取出数据进行转化 转化为json或数组:

    // 单条
    $result = $collection->findOne(); // 不需要这里toArray
    $json = MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($accountResultDoc))
    var_dump(json_decode($json, true));die;  // 转为数组
    
    // 多条
    $result = $collection->find()->toArray(); // 多条数据需要toArray
    $json = MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($result));
    
    var_dump(json_decode($json, true));die;  // 转为数组
    
    建议使用以上这种
    or 
    // 查询单条数据
    $result = $collection->findOne();
    $result = json_encode($result->getArrayCopy());
    
    

    mongo学习文档:
    https://haicoder.net/mongodb/mongodb-tutorial.html

    索引原理和命令
    转载:
    https://www.codenong.com/cs105228223/

    <?php
    // 引入mongo依赖包
    require_once __DIR__ . '/vendor/autoload.php';
    
    // 创建和连接mongo
    $client = new MongoDB\Client(
        'mongodb://localhost:27017'
    );
    
    $collection = $client->test->weir;
    // 集合 联合查询
    
    $result = $collection->aggregate([
    //    ['$group' => ['_id' => '$mobile']],
        ['$lookup' => [
            'from' => "test", // 关联哪个集合
            'localField' => 'mobile', // 当前集合关联的字段
            'foreignField' => 'mobile', // 关联集合的关联字段
            'as' => "items" // 最终结果放到items中
        ]]
    ])->toArray();
    //var_dump($result);
    //die;
    foreach ($result as $key => $value) {
        if ($value['items']) {
            foreach ($value['items'] as $item) {
                var_dump($item);
            }
        }
    }
    //var_dump($result);
    die;
    
    
    //var_dump($client);die;
    // 获取集合对象
    $collection = $client->test->test;
    
    // 插入单条数据
    //$result = $collection->insertOne([
    //    'name' => 'weiyuntao',
    //    'mobile' => '18338299767',
    //    'email' => '11102158222@qq.com'
    //]);
    
    // 插入多条数据
    //$result = $collection->insertMany([
    //    [
    //        'name' => 'wyt',
    //        'mobile' => '18338299767',
    //        'email' => '11102158222@qq.com',
    //        'age' => 18,
    //        'date' => date('Y-m-d H:i:s')
    //    ],
    //    [
    //        'name' => 'weir',
    //        'mobile' => '18338299767',
    //        'email' => '834801480@qq.com',
    //        'age' => 19,
    //        'date' => date('Y-m-d H:i:s')
    //    ]
    //]);
    
    // 更新单条文档
    //$result = $collection->updateOne(
    //    ['name' => 'weiyuntao'],
    //    ['$set' => [
    //        'name' => 'weiyuntao123',
    //        'mobile' => '18338299767',
    //        'email' => '11102158222@qq.com']
    //    ]
    //);
    
    // 更新多条文档
    //$result = $collection->updateMany(
    //    ['name' => 'weiyuntao'],
    //    ['$set' => [
    //        'name' => 'weiyuntao123',
    //        'mobile' => '18338299767',
    //        'email' => '11102158222@qq.com']
    //    ]
    //);
    
    // 删除单条
    //$result = $collection->deleteOne(
    //    ['name' => 'weiyuntao123'],
    //);
    
    // 删除多条
    //$result = $collection->deleteMany(
    //    ['name' => 'weiyuntao123'],
    //);
    
    // 查询单条
    //$result = $collection->findOne(
    //    ['name' => 'wyt'],
    //);
    
    // 查询多条
    //$result = $collection->find(
    //    ['name' => 'wyt'], // 为空 默认查询所有数据
    //    // 设置可选参数
    //    [
    //        // 通过参数projection 设置返回那些参数 1 代表返回 0代表不反悔 如果不设置则默认都返回 _id 默认是返回的 也可设置不返回
    //        'projection' => [
    //            'name' => 1,
    //            'mobile'
    //        ],
    //        // 附加参数 分页 排序
    //        'limit' => 5, // 限制每页条数
    //        'sort' => ['_id' => -1] // 1 正序 -1 逆序
    //    ],
    //)->toArray();
    // $in 范围查找 $nin
    //$result = $collection->find(
    //    ['name' => 'wyt', 'age'=> ['$in' => [22, 24]], 'date' => ['$gte' => '2023-04-22 00:00:00', '$lte' => '2023-04-22 23:59:59']]
    //)->toArray();
    
    // 逻辑运算符 or
    //$result = $collection->find(
    //    ['name' => 'wyt', '$or' => [['age' => 20], ['age' => 22]]]
    //)->toArray();
    
    // 查询替换 update只是局部处理数据 这个是整条数据替换 _id除外 这个是不可变的
    // 根据查询条件,匹配一个文档内容
    //$result = $collection->replaceOne(
    //    ['name' => 'wyt678'], // 设置查询条件 name = 'wyt678'
    //    ['name' => 'Robert'] // 替换成当前内容
    //);
    
    
    // 更新文档 upsert
    //$result = $collection->updateOne(
    //    ['name' => 'Bob'], // 设置查询条件
    //    ['$set' => ['state' => 'ny']], // 更新内容
    //    // 设置可选参数upsert = true
    //    ['upsert' => true] // 代表如果条件name=Bob,匹配不到文档,那么将更新内容和条件插入到一个新的文档。
    //);
    //
    //// 查询新插入的文档数据
    //$result = $collection->findOne([
    //    '_id' => $result->getUpsertedId(),
    //]);
    
    
    // mongo统计分析
    $result = $collection->aggregate([
        ['$group' => ['_id' => '$age', 'count' => ['$sum' => 1]]],
        ['$sort' => ['count' => -1]],
        ['$limit' => 5]
    ])->toArray();
    
    var_dump($result);die;
    
    
    
    //var_dump($result);
    
    

    相关文章

      网友评论

          本文标题:mongo学习文档 --- 2023-04-18

          本文链接:https://www.haomeiwen.com/subject/gelcjdtx.html