手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

SQL to Mongo Mapping Chart

mysql 与 mongo之间是怎么替换的?
官方有一个表格:

SQL Statement Mongo Query Language Statement
CREATE TABLE USERS (a Number, b Number) Implicit or use MongoDB::createCollection().
INSERT INTO USERS VALUES(1,1) $db->users->insert(array("a" => 1, "b" => 1));
SELECT a,b FROM users $db->users->find(array(), array("a" => 1, "b" => 1));
SELECT * FROM users WHERE age=33 $db->users->find(array("age" => 33));
SELECT a,b FROM users WHERE age=33 $db->users->find(array("age" => 33), array("a" => 1, "b" => 1));
SELECT a,b FROM users WHERE age=33 ORDER BY name $db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1));
SELECT * FROM users WHERE age>33 $db->users->find(array("age" => array('$gt' => 33)));
SELECT * FROM users WHERE age<33 $db->users->find(array("age" => array('$lt' => 33)));
SELECT * FROM users WHERE name LIKE "%Joe%" $db->users->find(array("name" => new MongoRegex("/Joe/")));
SELECT * FROM users WHERE name LIKE "Joe%" $db->users->find(array("name" => new MongoRegex("/^Joe/")));
SELECT * FROM users WHERE age>33 AND age<=40 $db->users->find(array("age" => array('$gt' => 33, '$lte' => 40)));
SELECT * FROM users ORDER BY name DESC $db->users->find()->sort(array("name" => -1));
CREATE INDEX myindexname ON users(name) $db->users->ensureIndex(array("name" => 1));
CREATE INDEX myindexname ON users(name,ts DESC) $db->users->ensureIndex(array("name" => 1, "ts" => -1));
SELECT * FROM users WHERE a=1 and b='q' $db->users->find(array("a" => 1, "b" => "q"));
SELECT * FROM users LIMIT 10 SKIP 20 $db->users->find()->limit(10)->skip(20);
SELECT * FROM users WHERE a=1 or b=2 $db->users->find(array('$or' => array(array("a" => 1), array("b" => 2))));
SELECT * FROM users LIMIT 1 $db->users->find()->limit(1);
EXPLAIN SELECT * FROM users WHERE z=3 $db->users->find(array("z" => 3))->explain()
SELECT DISTINCT last_name FROM users $db->command(array("distinct" => "users", "key" => "last_name"));
SELECT COUNT(*y) FROM users $db->users->count();
SELECT COUNT(*y) FROM users where AGE > 30 $db->users->find(array("age" => array('$gt' => 30)))->count();
SELECT COUNT(AGE) from users $db->users->find(array("age" => array('$exists' => true)))->count();
UPDATE users SET a=1 WHERE b='q' $db->users->update(array("b" => "q"), array('$set' => array("a" => 1)));
UPDATE users SET a=a+2 WHERE b='q' $db->users->update(array("b" => "q"), array('$inc' => array("a" => 2)));
DELETE FROM users WHERE z="abc" $db->users->remove(array("z" => "abc"));


不过,硬要说的话,这个还不全,http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart,这里有更全的。
在上面的页面还能够讲这个mapping chart导出成pdf。
比如,这个:docs-8716963-090117-10.pdf

Tags: mongo

文章出现乱码怎么办?

文本本来是UTF-8的。但是会出现乱码,类似:
像吉本芭娜娜一æ·ï¼Œåœ¨è¿™ä¸ªä¸–界上,
我最喜欢的地方就是厨房。
—— 李妙生
这种在显示的时候出现很让人郁闷,但不能不解决它,怎么办?写了一个无耻的函数:

XML/HTML代码
  1. function getUtf8Content($content,$default=null){  
  2.         $dContent = utf8_decode($content);  
  3.         if(mb_detect_encoding($dContent) == mb_detect_encoding($content)){//这句话有点妖。多试试就知道了  
  4.             if($default !== null){  
  5.                 $content = $default ;  
  6.             }else{  
  7.                 if(strpos($dContent,"??????")===false){  
  8.                     $content = $dContent;  
  9.                 }  
  10.             }  
  11.         }  
  12.         return $content;  
  13.     }  

不管了,能解决问题就好。。黑黑,不要怕丑

Tags: 乱码

HTTP 411 错误 – 需要内容长度头

介绍

您的 Web 服务器认为,客户端(如您的浏览器或我们的 CheckUpDown 机器人)发送的 HTTP 数据流应包括一个 “ 内容长度 ” 规范。 这通常是只用于那些将数据放置在 Web 服务器上的 HTTP 方法,而不是数据检索方法。

HTTP 循环中的 411 错误

任何客户端 ( 例如您的浏览器或我们的 CheckUpDown 机器人 ) ,都需要通过以下循环:

  • 从您站点的 IP 名称 ( 即您站点的网址-URL, 不带起始的 ‘http://') 获得一个 IP 地址。这个对应关系 ( 即由 IP 名称向 IP 地址转换的对应关系 ) 由域名服务器 (DNSs) 提供。
  • 打开一个 IP 套接字 (socket) 连接到该 IP 地址。
  • 通过该套接字写 HTTP 数据流。
  • 从您的Web服务器接受响应的 HTTP 数据流。该数据流包括状态编码, 其值取决于 HTTP 协议 。 解析该数据流得到 状态编码和其他有用信息。

该错误在以上所述的最后一步生成,即当客户端收到 HTTP 状态编码 并识别其为 ‘411’ 。

------------------------------------

android在发送流的时候好象不发送Content-length的。所以有时候会返回411

继续几点注意事项

命令行和WEB运行程序中遇到的问题就是,这两个方式生成的图片目录权限不一样,目录命令行,如果以xxx用户登录,生成的目录组就是xxx,而WEB因为指定了apache或者nginx的用户组(如:www-data),生成出来的权限就是以www-data为主,如果需要读取和处理Xxx目录下的图片等,很可能会遇到不能读取或者没有权限的问题
因此,一个办法是:su www -c 'xxxx'这种指定权限的方式来处理

还有一个办法:
suPHP is a tool for executing PHP scripts with the permissions of their owners. It consists of an Apache module (mod_suphp) and a setuid root binary (suphp)
嗯看一下:
suPHP
现在就可以了?但总是不爽。没有什么更好的办法 .。。

怎样刷新页面

看这个标题,或许很多人会嘲笑我,刷新,谁不会呀。F5一按就完事了呗。
大家都知道刷新分:普通刷新和强制刷新,普通刷新的话,如果图片做了缓存(304)那么几乎是永远都看不到新图了。做开发的,当然希望是每次都强制刷新,可以看到真实的效果,不过。。。。万一用户没强刷怎么办。
看了一下taobao QA的文章才了解,刷新的种类居然有这么多:

http://qa.taobao.com/?p=15297
  1. 浏览器的刷新有2类  
  2. 第1类:普通刷新。会首先从缓存中加载内容,缓存中已过期部分内容会从服务器重新请求。  
  3. 第2类:强制刷新(刷新缓存和页面)。会从服务器重新请求所需要加载的内容  
  4.   
  5. 第2类刷新的情况:  
  6. 1)        快捷键CTRL + F5  
  7. 2)        按键CTRL + 点击工具栏刷新按钮  
  8. 3)        按键CTRL + 点击地址栏右侧刷新按钮   
  9.   
  10. 第1类刷新的情况:  
  11. 1)        点击工具栏刷新按钮  
  12. 2)        点击地址栏右侧刷新按钮  
  13. 3)        网页中右键菜单,点击刷新按钮  
  14. 4)        菜单:查看->重新载入  
  15. 5)        快捷键F5  
  16. 6)        快捷键SHIFT + F5  
  17. 7)        通过鼠标手势刷新  
  18. 8)        按键CTRL + 网页中右键菜单,点击刷新按钮  
  19. 9)        按键CTRL + 菜单:查看->重新载入  
  20. 10)     Webkit核下,快捷键CTRL + R  

mac下面,几乎就是接ctrl换成command。
Firefox,如果安装了firebug,打开firebug,在net标签中可以选择:强制刷新,这样每次请求都不会从缓存中走了。