map-reduce
aggregate
|
|
参考
|
|
|
|
|
|
单个$in 可以省略$in操作符 一下两条查询结果相同12>db.food.find({"fruit":"apple"}); //1, 2,3>db.food.find({"fruit":{$in:["apple"]}});//1,2,3
|
|
也可是使用 $where 来代替1>db.food.find({$where:"this.fruit.length == 3"}); // 1, 2, 3
$slice(对数组进行分片)
|
|
查询第一个元素为apple的记录
|
|
一直以为注入只存在关系型数据库中,看了这篇文章才知道mongodb也会中招.
翻看php手册发现早就发现有这个问题,以前看手册一直没注意.
数组绑定时的注入
|
|
如果传入url为1http://127.0.0.1/2.php?username[$ne]=test&password[$ne]=test
mongodb最终执行:1db.test.find({username:{'$ne':'test'},password:{'$ne':'test'}});
php会把test集合内的所有数据全部便利出来。
防止注入的方法也很简单, 注意参数的检验.
|
|
接受参数拼接直接以命令行执行的注入可以参考php手册 使用MongoCode 进行转椅后再使用.
<?php
$mongo = new MongoClient();
$db = $mongo->dbName;
$collection = $db->collectionName;
$cursor = $collection->find(
$criteria,
array('_id' => 1)
)->limit(1);
if($coursor->count() == 0){
exit('not exist');
}
exit('exits');