<?php

include "config/config.inc.php";
$host = $config['host'];
$port = $config['port'];

$m = new MongoClient("mongodb://{$host}:{$port}");
$db = $m->demo;
$table = $db->users;

//insert 插入

$arr = array('user_name' => 'test2', 'salary' => 100000);
$table->insert($arr);

//findOne 获取一条数据
$data = $table->findOne();

//查询条件

$where = array('_id' => new MongoId('51fcca7bb1b6650817007f5c'));

//set 修改节点

$table->update($where , array('$set' => array('performance' => array( array('class1' => 10, 'class2' => 99, 'class3' => 98) ))));

for($i=1; $i<=100; $i++){
  $arr = array('class1' => 100, 'class2' => 100, 'class3' => 100);

  //push 往节点添加数据,不判断值是否存在
  $table->update($where , array('$push' => array('performance' => $arr)));

  //addToSet 往节点添加数据,存在相同的值则不添加
  $table->update($where , array('$addToSet' => array('performance' => array('$each' => array($arr)))));
}

//find 获取所有数据

$result = $table->find($where);

//获取游标数据,并转换为数组

$data = iterator_to_array($result);
foreach($data as $row){
  echo (string)$row['_id'] . ' ' . $row['user_name'];

  if(!empty($row['performance'])){
    $performance = $row['performance'];

    foreach($performance as $key => $val){
    echo ' ' . $key . ' = ' . $val . ' ';
  }
}
echo '</br>';
}

//游标取值

while($result->hasNext()){
  $row = $result->getNext();
  echo (string)$row['_id'] . ' ' . $row['user_name'];

  if(!empty($row['performance'])){
    $performance = $row['performance'];

    foreach($performance as $key => $val){
      echo ' ' . $key . ' = ' . $val . ' ';
    }
  }
  echo '</br>';
 }

// slice 对子文档分页
$result = $table->findOne($where, array('performance' => array( '$slice' => array(2, 3) ) ));

var_dump($result);

最新文章

  1. 犀利的报表系统,发票据与报表开发的快速利器,AgileEAS.NET SOA中间件GReport使用指南
  2. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
  3. 关于JavaScript内存泄漏的质疑
  4. crystal
  5. springMVC数据验证出现404错误解决办法
  6. 广播变量、累加器、collect
  7. cocos2d-x 之 CCArray 源码分析(2)
  8. 基于centos搭建nginx+uwsgi运行django环境
  9. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法
  10. demo14
  11. 开发日志系列:一个表单页面的呈现与提交(一)——JSON的操作
  12. 149. Max Points on a Line
  13. SQLServer的ISNULL函数和Mysql的IFNULL函数
  14. Python获取并修改hosts
  15. 微信小程序开发基础知识总结
  16. 微信小程序生成带参数的二维码 小程序二维码
  17. hadoop in hue的搭建(基于cdh版本)
  18. Spring Boot 中实现定时任务的两种方式
  19. 查找运行时间超过1天的frmweb进程
  20. 【转载】java abstract class和interface的区别

热门文章

  1. js实现页面传值
  2. hdu2037-----------贪心, 活动安排问题
  3. 使jQuqer更高效的方法
  4. iOS - UISwitch
  5. 堆内存指针的管理类(禁,引数(指针copy),值copy,移)
  6. maven概念
  7. spring构造函数注入、setter方法注入和接口注入
  8. wpf datagrid 如何让标头 及内容居中
  9. UNC path
  10. iOS——MVVM设计模式