美文网首页
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