mongodb(基础用法)
驱动和客户端库
https://mongodb-documentation.readthedocs.org/en/latest/ecosystem/drivers.html#id2
窗体顶端
| 
 | 
窗体底端
SQL to mongo Shell to C++
MongoDB queries are expressed as JSON (BSON) objects. This quick reference chart shows examples as SQL, mongo shell syntax, and MongoDB C++ driver syntax.
A query expression in MongoDB (and other things, such as an index key pattern) is represented as BSON. In C++ you can use BSONObjBuilder (aka bson::bob) to build BSON objects, or the BSON() macro. The examples below assume a connection c already established:
using namespace bson;
DBClientConnection c;
c.connect("somehost");
Several of the C++ driver methods throw mongo::DBException, so you will want a try/catch statement as some level in your program. Also be sure to call c.getLastError() after writes to check the error code.
| 
 SQL  | 
 mongo Shell  | 
 C++ Driver  | 
| 
 INSERT INTO USERS VALUES( 1, 1)  | 
 db.users.insert( { a: 1, b: 1 } )  | 
 // GENOID is optional. if not done by client, // server will add an _id c.insert("mydb.users", BSON(GENOID<<"a"<<1<<"b"<<1)); // then: string err = c.getLastError();  | 
| 
 SELECT a,b FROM users  | 
 db.users.find( {}, {a: 1, b: 1 } )  | 
 auto_ptr<DBClientCursor> cursor = c.query("mydb.users", Query(), 0, 0, BSON("a"<<1<<"b"<<1));  | 
| 
 SELECT * FROM users  | 
 db.users.find()  | 
 auto_ptr<DBClientCursor> cursor = c.query("mydb.users", Query());  | 
| 
 SELECT * FROM users WHERE age=33  | 
 db.users.find( { age: 33 } )  | 
 auto_ptr<DBClientCursor> cursor = c.query("mydb.users", QUERY("age"<<33)) // or: auto_ptr<DBClientCursor> cursor = c.query("mydb.users", BSON("age"<<33))  | 
| 
 SELECT * FROM users WHERE age=33 ORDER BY name  | 
 db.users.find( { age: 33 } ).sort( { name: 1 } )  | 
 auto_ptr<DBClientCursor> cursor = c.query("mydb.users", QUERY("age"<<33).sort("name"));  | 
| 
 SELECT * FROM users WHERE age>33 AND age<=40  | 
 db.users.find( { 'age': { $gt:33, $lte:40 } } )  | 
 auto_ptr<DBClientCursor> cursor = c.query("mydb.users", QUERY("age"<<GT<<33<<LTE<<40));  | 
| 
 CREATE INDEX myindexname ON users(name)  | 
 db.users.ensureIndex( {name: 1 } )  | 
 c.ensureIndex("mydb.users", BSON("name"<<1));  | 
| 
 SELECT * FROM users LIMIT 10 SKIP 20  | 
 db.users.find().limit(10).skip(20)  | 
 auto_ptr<DBClientCursor> cursor = c.query("mydb.users", Query(), 10, 20);  | 
| 
 SELECT * FROM users LIMIT 1  | 
 db.users.findOne()  | 
 bo obj = c.findOne("mydb.users", Query());  | 
| 
 SELECT DISTINCT last_name FROM users WHERE x=1  | 
 db.users.distinct( 'last_name', {x: 1} )  | 
 // no helper for distinct yet in c++ driver, // so send command manually bo cmdResult; bool ok = c.runCommand( "mydb", BSON("distinct" << "users" << "key" << "last_name" << "query" << BSON("x"<<1)), cmdResult); list<bo> results; cmdResult["values"].Obj().Vals(results);  | 
| 
 SELECT COUNT(*) FROM users where AGE > 30  | 
 db.users.find( { age: { $gt: 30 } } ).count()  | 
 unsigned long long n = c.count("mydb.users", BSON("age"<<GT<<30));  | 
| 
 UPDATE users SET a=a+2 WHERE b='q'  | 
 db.users.update( { b: 'q' }, { $inc: { a:2 } }, false, true)  | 
 c.update("mydb.users", QUERY("b"<<"q"), BSON("$inc"<<BSON("a"<<2)), false, true); // then optionally: string err = c.getLastError(); bool ok = err.empty();  | 
| 
 DELETE FROM users WHERE z="abc"  | 
 db.users.remove( { z: 'abc' } )  | 
 c.remove("mydb.users", QUERY("z"<<"abc")); // then optionally: string err = c.getLastError();  | 
也可以参考
- Several more examples (in shell syntax) are on the SQL to Mongo Mapping Chart page.
 - C++ Language Center
 - < Getting Started with the C++ Driver
 
SQL to MongoDB Mapping Chart
In addition to the charts that follow, you might want to consider the Frequently Asked Questions section for a selection of common questions about MongoDB.
Terminology and Concepts
The following table presents the various SQL terminology and concepts and the corresponding MongoDB terminology and concepts.
| 
 SQL Terms/Concepts  | 
 MongoDB Terms/Concepts  | 
| 
 database  | 
|
| 
 table  | 
|
| 
 row  | 
|
| 
 column  | 
|
| 
 index  | 
|
| 
 table joins  | 
 embedded documents and linking  | 
| 
 primary key Specify any unique column or column combination as primary key.  | 
 In MongoDB, the primary key is automatically set to the _idfield.  | 
| 
 aggregation (e.g. group by)  | 
 aggregation pipeline See the SQL to Aggregation Mapping Chart.  | 
Executables
The following table presents the MySQL/Oracle executables and the corresponding MongoDB executables.
| 
 
  | 
 MySQL/Oracle  | 
 MongoDB  | 
| 
 Database Server  | 
 mysqld/oracle  | 
|
| 
 Database Client  | 
 mysql/sqlplus  | 
Examples
The following table presents the various SQL statements and the corresponding MongoDB statements. The examples in the table assume the following conditions:
- The SQL examples assume a table named users.
 - The MongoDB examples assume a collection named users that contain documents of the following prototype:
 
·                {
·                  _id: ObjectID("509a8fb2f3f4948bd2f983a0"),
· user_id: "abc123",
· age: 55,
· status: 'A'
· }
Create and Alter
The following table presents the various SQL statements related to table-level actions and the corresponding MongoDB statements.
| 
 SQL Schema Statements  | 
 MongoDB Schema Statements  | 
 Reference  | 
CREATE TABLE users ( id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id) )  | 
 Implicitly created on first insert() operation. The primary key_id is automatically added if _id field is not specified. db.users.insert( {
user_id: "abc123", age: 55, status: "A" } ) However, you can also explicitly create a collection: db.createCollection("users")
 | 
 See insert() anddb.createCollection()for more information.  | 
ALTER TABLE users ADD join_date DATETIME  | 
 Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level. However, at the document level, update() operations can add fields to existing documents using the $set operator. db.users.update(     { },
    { $set: { join_date: new Date() } },
    { multi: true }
)  | 
 See the Data Modeling Concepts, update(), and$set for more information on changing the structure of documents in a collection.  | 
ALTER TABLE users DROP COLUMN join_date  | 
 Collections do not describe or enforce the structure of its documents; i.e. there is no structural alteration at the collection level. However, at the document level, update() operations can remove fields from documents using the $unset operator. db.users.update(     { },
    { $unset: { join_date: "" } },
    { multi: true }
)  | 
 See Data Modeling Concepts, update(), and$unset for more information on changing the structure of documents in a collection.  | 
CREATE INDEX idx_user_id_asc ON users(user_id)  | 
db.users.ensureIndex( { user_id: 1 } )
 | 
 See ensureIndex() andindexes for more information.  | 
CREATE INDEX idx_user_id_asc_age_desc ON users(user_id, age DESC)  | 
db.users.ensureIndex( { user_id: 1, age: -1 } )
 | 
 See ensureIndex() andindexes for more information.  | 
DROP TABLE users  | 
db.users.drop()  | 
 See drop() for more information.  | 
Insert
The following table presents the various SQL statements related to inserting records into tables and the corresponding MongoDB statements.
| 
 SQL INSERT Statements  | 
 MongoDB insert() Statements  | 
 Reference  | 
INSERT INTO users(user_id, age, status) VALUES ("bcd001",
45, "A")  | 
db.users.insert( {
user_id: "bcd001", age: 45, status: "A" } )  | 
 See insert() for more information.  | 
Select
The following table presents the various SQL statements related to reading records from tables and the corresponding MongoDB statements.
| 
 SQL SELECT Statements  | 
 MongoDB find() Statements  | 
 Reference  | 
SELECT * FROM users  | 
db.users.find()  | 
 See find()for more information.  | 
SELECT id, user_id, status FROM users  | 
db.users.find(     { },
    { user_id: 1, status: 1 }
)  | 
 See find()for more information.  | 
SELECT user_id, status FROM users  | 
db.users.find(     { },
    { user_id: 1, status: 1, _id: 0 }
)  | 
 See find()for more information.  | 
SELECT * FROM users WHERE status = "A"  | 
db.users.find(     { status: "A" }
)  | 
 See find()for more information.  | 
SELECT user_id, status FROM users WHERE status = "A"  | 
db.users.find(     { status: "A" },
    { user_id: 1, status: 1, _id: 0 }
)  | 
 See find()for more information.  | 
SELECT * FROM users WHERE status != "A"  | 
db.users.find(     { status: { $ne: "A" } }
)  | 
|
SELECT * FROM users WHERE status = "A" AND age = 50  | 
db.users.find(     { status: "A",
age: 50 } )  | 
|
SELECT * FROM users WHERE status = "A" OR age = 50  | 
db.users.find(     { $or: [ { status: "A" } ,
             { age: 50 } ] }
)  | 
|
SELECT * FROM users WHERE age > 25  | 
db.users.find(     { age: { $gt: 25 } }
)  | 
|
SELECT * FROM users WHERE age < 25  | 
db.users.find(    { age: { $lt: 25 } }
)  | 
|
SELECT * FROM users WHERE age > 25 AND age <= 50  | 
db.users.find(    { age: { $gt: 25, $lte: 50 } }
)  | 
|
SELECT * FROM users WHERE user_id like "%bc%"  | 
db.users.find(    { user_id: /bc/ }
)  | 
|
SELECT * FROM users WHERE user_id like "bc%"  | 
db.users.find(    { user_id: /^bc/ }
)  | 
|
SELECT * FROM users WHERE status = "A" ORDER BY user_id ASC  | 
db.users.find( { status: "A" } ).sort( { user_id: 1 } )
 | 
|
SELECT * FROM users WHERE status = "A" ORDER BY user_id DESC  | 
db.users.find( { status: "A" } ).sort( { user_id: -1 } )
 | 
|
SELECT COUNT(*) FROM users  | 
db.users.count() or db.users.find().count()  | 
|
SELECT COUNT(user_id) FROM users  | 
db.users.count( { user_id: { $exists: true } } )
or db.users.find( { user_id: { $exists: true } } ).count()
 | 
|
SELECT COUNT(*) FROM users WHERE age > 30  | 
db.users.count( { age: { $gt: 30 } } )
or db.users.find( { age: { $gt: 30 } } ).count()
 | 
|
SELECT DISTINCT(status) FROM users  | 
db.users.distinct( "status" )  | 
 See find()anddistinct()for more information.  | 
SELECT * FROM users LIMIT 1  | 
db.users.findOne() or db.users.find().limit(1)  | 
|
SELECT * FROM users LIMIT 5 SKIP 10  | 
db.users.find().limit(5).skip(10)  | 
|
EXPLAIN SELECT * FROM users WHERE status = "A"  | 
mongodb(基础用法)的更多相关文章
- mongodb基础用法
		
安装部分 mongodb配置方法 mongodb的安装目录 C:\MongoDB\Server\3.2\bin 创建以下目录 c:\mongo\log c:\mongo\db 创建mongodb的配置 ...
 - Mongodb基础用法及查询操作[转载]
		
插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...
 - Mongodb基础用法及查询操作
		
插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...
 - MongoDB 监控 --- MongoDB基础用法(八)
		
MongoDB 监控 在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能.这样在大流量得情况下可以很好的应对并保证MongoDB正常运作. M ...
 - MongoDB 数据备份和恢复 --- MongoDB基础用法(七)
		
数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器. mongo ...
 - MongoDB分片 --- MongoDB基础用法(六)
		
分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量. ...
 - MongoDB复制 --- MongoDB基础用法(五)
		
复制 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从硬件故障和服务中断中恢复 ...
 - MongoDB Java连接---MongoDB基础用法(四)
		
MongoDB 连接 标准 URI 连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN ...
 - MongoDB用户,角色管理 --- MongoDB基础用法(三)
		
用户管理 用户创建 MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问. 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作. 用户应该只有最小权限集才 ...
 
随机推荐
- JS案例之1——pager 分页
			
学习JS大半年之久,第一次自己尝试写一些小插件,写法参考网上某位牛人写代码的思路. 此处代码写的是静态分页.如果需动态分页,还可以修改下.第一次写,还有很多地方可以优化.希望各位大牛踊跃拍砖. 预览图 ...
 - 在matlab中实现遥感影像和shp文件的结合显示
			
clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); % ...
 - Linux常用的基本命令
			
man命令:查看帮助信息 格式:man 需要查看的命令 date命令:显示时间 格式:# date ...
 - 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)
			
相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...
 - 利用javascript和WebGL绘制地球 【翻译】
			
利用javascript和WebGL绘制地球 [翻译] 原翻译:利用javascript和WebGL绘制地球 [翻译] 在我们所有已知的HTML5API中,WebGL可能是最有意思的一个,利用这个AP ...
 - Vs2012 中使用itoa
			
自己在写程序的时候经常用到保存大量的图片,从而对其编号,所以要把整型转换成字符型. 通常自己定义string,而字符使用char[],把整形转换成char类型,然后和string类型相加,但是在VS2 ...
 - json跨域原理及解决方法
			
这一篇文章呢,主要是之前一直听别人讲json跨域跨域,但是还是一头雾水,只知其一,于是一怒之下,翻阅各种资料,如果有不正确的地方,劳烦指正一下^_^ 首先,先了解浏览器有一个很重要安全性限制,即为同源 ...
 - Asp.net MVC在View里动态捆绑压缩引用的js
			
前言 Asp.net MVC 4以上版本多了BundleConfig.RegisterBundles方法,可以把要捆绑的脚本或样式进行捆绑压缩,以减少客户端的请求次数从而提高了客户端的访问速度. 问题 ...
 - PDA设备小知识--(IP)工业防护等级含义
			
IP(INTERNATIONAL PROTECTION)防护等级是专门的工业防护等级,,它将电器依其防尘.防湿气之特性加以分级.IP防护等级是由两个数字所组成,第1个数字表示电器离尘.防止外物侵入的等 ...
 - javascript继承(三)—继承的实现原理
			
打算针对js的继承写一系列文章,详细的分析js里继承原理,实现方式,各种继承方式的优缺点,以及最优继承方案,还有多继承的问题等…. 面向对象的编程的核心是封装.继承和多态,js可以看作是一种面向对象的 ...