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);
网友评论