ttlsa教程系列之mongodb——(三)mongodb的增删查改

默北 mongodbttlsa教程系列之mongodb——(三)mongodb的增删查改已关闭评论15,0101字数 5452阅读18分10秒阅读模式

对数据库进行增删查改是最基本的技能,也没什么诀窍,完全是熟能生巧,多多练习。
1. SQL Statement VS. Mongo Query Language Statement

SQL Statement                                       Mongo Query Language Statement
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"));

2. mongodb查询操作文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

Operator      Meaning                        Example                                             SQL Equivalent
$gt           Greater Than                   “score”:{"$gt”:0}                                    >
$lt           Less Than                      “score”:{"$lt”:0}                                    <
$gte          Greater Than or Equal          “score”:{"$gte”:0}                                   >=
$lte          Less Than or Equal             “score”:{"$lte”:0}                                   ?
$all          Array Must Contain All         “skills”:{"$all”:["mongodb”,"python"]}               N/A
$exists       Property Must Exist            “email”:{"$exists”:True}                             N/A
$mod          Modulo X Equals Y              “seconds”:{"$mod”:[60,0]}                            MOD()
$ne           Not Equals                     “seconds”:{"$ne”:60}                                 !=
$in           In                             “skills”:{"$in”:["c”,"c++"]}                          IN
$nin          Not In                         “skills”:{"$nin”:["php”,"ruby”,"perl"]}               NOT IN
$nor          Nor                            “$nor”:[{"language”:"english"},{"country”:"usa"}]     N/A
$or           Or                             “$or”:[{"language”:"english"},{"country”:"usa"}]      OR
$size         Array Must Be Of Size          “skills”:{"$size”:3}                                  N/A

3. mongodb更新修改文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

Modifier     Meaning                                          Example
$inc         Atomic Increment                                 “$inc”:{"score”:1}
$set         Set Property Value                               “$set”:{"username”:"niall"}
$unset       Unset (delete) Property                          “$unset”:{"username”:1}
$push        Atomic Array Append (atom)                       “$push”:{"emails”:"foo@example.com"}
$pushAll     Atomic Array Append (list)                       “$pushall”:{"emails”:["foo@example.com”,"foo2@example.com"]}
$addToSet    Atomic Append-If-Not-Present                     “$addToSet”:{"emails”:"foo@example.com"}
$pop         Atomic Array Tail Remove                         “$pop”:{"emails”:1}
$pull        Atomic Conditional Array Item Removal            “$pull”:{"emails”:"foo@example.com"}
$pullAll     Atomic Array Multi Item Removal                  “$pullAll”:{"emails”:["foo@example.com”, “foo2@example.com"]}
$rename      Atomic Property Rename                           “$rename”:{"emails”:"old_emails"}

4. 批量插入
将多个文档插入到一个集合中,使用批量插入来加快插入速度。在shell环境下,可以使用batchInsert函数。如:文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

>db.ttlsa.batchInsert([{"_id":0},{"_id":1},{"_id":2},{"_id":3}])

注意:
a. 批量插入只能针对单个集合。
b. 插入的大小不能超过48MB。文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

5. php连接mongodb
a. 对于启用验证文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$connection = new MongoClient("mongodb://${username}:${password}@localhost");
$connection = new MongoClient("mongodb://localhost", array("username" => $username, "password" => $password));

b. 复制集文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$connection = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName"));
$connection = new MongoClient("mongodb://rs1.example.com:27017", array("replicaSet" => "myReplSetName"));
$connection = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017", array("replicaSet" => "myReplSetName"));

c. 分片文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$connection = new MongoClient("mongodb://mongos1.example.com:27017");
$connection = new MongoClient("mongodb://mongos1.example.com:27017,mongos2.example.com:27017"));

6. 选择数据库文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$db = $connection->selectDB('dbname');
$db = $connection->dbname;

7. 创建或选择已存在的集合文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$collection = $db->col_name;
$col_name = $connection->dbname->col_name;

8. 创建文档文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$col_contant = array('website' => 'www.ttlsa.com', 'QQqun' => 39514058, 'email' => 'service@ttlsa.com');
$col_name->insert($col_contant); //异步插入
$col_name->insert($col_contant, array('safe' => true)); //同步插入

9. 查询文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$id = new MongoId('objectid_No.');
$row = $col_name->findone( array( '_id' => $id ) );
$row = $col_name->findone( array('website' => 'www.ttlsa.com'));
$e-mail = $db->col_name->findone( array('website' => 'www.ttlsa.com'),array('email'));

10. 更新文档文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$col_name->update( array('_id' => new MongoId('objectid_No.')), array('$set' => array('email' => 'ttlsa@ttlsa.com')));

11. 删除文档文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

$criteria = array('_id' => new MongoId('objectid_No.'));
$col_name->remove($criteria, array("justOne" => true));

转载请注明出处: https://www.ttlsa.com/html/1636.html文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/

文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/文章源自运维生存时间-https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/
weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 16/07/2013 17:51:57
  • 转载请务必保留本文链接:https://www.ttlsa.com/mongodb/mongodb-insert-delete-select-update/