驱动和客户端库

https://mongodb-documentation.readthedocs.org/en/latest/ecosystem/drivers.html#id2

https://mongodb-documentation.readthedocs.org/en/latest/ecosystem/drivers/cpp-to-sql-to-mongo-shell.html

窗体顶端

 
 

窗体底端

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();

也可以参考

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

database

table

collection

row

document or BSON document

column

field

index

index

table joins

embedded documents and linking

primary key

Specify any unique column or column combination as primary key.

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

mongod

Database Client

mysql/sqlplus

mongo

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 Conceptsupdate(), 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 Conceptsupdate(), 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" } }
)

See find()and $ne for more information.

SELECT *
FROM users
WHERE status = "A"
AND age = 50
db.users.find(
    { status: "A",
      age: 50 }
)

See find()and $andfor more information.

SELECT *
FROM users
WHERE status = "A"
OR age = 50
db.users.find(
    { $or: [ { status: "A" } ,
             { age: 50 } ] }
)

See find()and $or for more information.

SELECT *
FROM users
WHERE age > 25
db.users.find(
    { age: { $gt: 25 } }
)

See find()and $gt for more information.

SELECT *
FROM users
WHERE age < 25
db.users.find(
   { age: { $lt: 25 } }
)

See find()and $lt for more information.

SELECT *
FROM users
WHERE age > 25
AND   age <= 50
db.users.find(
   { age: { $gt: 25, $lte: 50 } }
)

Seefind(),$gt, and$lte for more information.

SELECT *
FROM users
WHERE user_id like "%bc%"
db.users.find(
   { user_id: /bc/ }
)

See find()and $regexfor more information.

SELECT *
FROM users
WHERE user_id like "bc%"
db.users.find(
   { user_id: /^bc/ }
)

See find()and $regexfor more information.

SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id ASC
db.users.find( { status: "A" } ).sort( { user_id: 1 } )

See find()and sort()for more information.

SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id DESC
db.users.find( { status: "A" } ).sort( { user_id: -1 } )

See find()and sort()for more information.

SELECT COUNT(*)
FROM users
db.users.count()

or

db.users.find().count()

See find()andcount() for more information.

SELECT COUNT(user_id)
FROM users
db.users.count( { user_id: { $exists: true } } )

or

db.users.find( { user_id: { $exists: true } } ).count()

Seefind(),count(), and$exists for more information.

SELECT COUNT(*)
FROM users
WHERE age > 30
db.users.count( { age: { $gt: 30 } } )

or

db.users.find( { age: { $gt: 30 } } ).count()

Seefind(),count(), and $gt for more information.

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)

Seefind(),findOne(), andlimit() for more information.

SELECT *
FROM users
LIMIT 5
SKIP 10
db.users.find().limit(5).skip(10)

Seefind(),limit(), and skip()for more information.

EXPLAIN SELECT *
FROM users
WHERE status = "A"

mongodb(基础用法)的更多相关文章

  1. mongodb基础用法

    安装部分 mongodb配置方法 mongodb的安装目录 C:\MongoDB\Server\3.2\bin 创建以下目录 c:\mongo\log c:\mongo\db 创建mongodb的配置 ...

  2. Mongodb基础用法及查询操作[转载]

    插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...

  3. Mongodb基础用法及查询操作

    插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...

  4. MongoDB 监控 --- MongoDB基础用法(八)

    MongoDB 监控 在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能.这样在大流量得情况下可以很好的应对并保证MongoDB正常运作. M ...

  5. MongoDB 数据备份和恢复 --- MongoDB基础用法(七)

    数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器. mongo ...

  6. MongoDB分片 --- MongoDB基础用法(六)

    分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量. ...

  7. MongoDB复制 --- MongoDB基础用法(五)

    复制 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从硬件故障和服务中断中恢复 ...

  8. MongoDB Java连接---MongoDB基础用法(四)

    MongoDB 连接 标准 URI 连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN ...

  9. MongoDB用户,角色管理 --- MongoDB基础用法(三)

    用户管理 用户创建 MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问. 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作. 用户应该只有最小权限集才 ...

随机推荐

  1. 取消StringGrid的自动滚动

    StringGrid的Options的goRowSelect为false时,在点击右侧未显示完全的Cell,StringGrid会自动向左滚动,怎样设定,取消StringGrid的自动滚动啊?Delp ...

  2. 虚拟现实的三维时态GIS模式研究

  3. 学习Shell脚本编程(目录)

    所涉及的内容如下: Shell命令行的运行 编写.修改权限和执行Shell程序的步骤 在Shell程序中使用参数和变量 表达式比较.循环结构语句和条件结构语句 在Shell程序中使用函数和调用其他Sh ...

  4. C#中out和ref之间的区别

    首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所 ...

  5. 20145234黄斐《信息安全系统设计基础》GDB调试汇编堆栈过程分析

    堆栈跟踪 首先编辑一个程序 用gcc编译,再使用gdb调试,发现gdb尚未下载 下载后重新运行gdb 设置断点:b+行号或者"main" 运行:r frame:打印出的信息:栈的层 ...

  6. 破解windows server 2008 的登录密码。有效的

    今天拿到一块以前服务器上替换下来的老盘,里面还有系统.挂载到另外一台闲置服务器,发现密码忘记了, 结果拿出pe和以前修改xp和2003的系统那样去修改发现不行,不知道为什么,修改SAM文件明明提示成功 ...

  7. State Pattern -- 状态模式原理及实现(C++)

    主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍命令模式的实现. 问题出发点 在实际开发中,我们经常会遇到这种情况:一个对象有多种状态,在每一个 ...

  8. 谈谈iOS9中的WebKit 与 Safari

    每个用过 UIWebView 的iOS开发者对其诸多的限制和有限的功能也深有感触.悻然,自iOS8推出 WebKit 框架后将改变这一窘境.在本文我将会深入WebKit来体验一下它给我们带来的好处,同 ...

  9. [bzoj 1911][Apio 2010]特别行动队(斜率优化DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1911 分析: 首先可以的到裸的方程f[i]=max{f[j]+a*(Si-Sj)^2+b*(S ...

  10. java网络编程基础

    前言 通过网络进行数据传输时,一般使用TCP/UDP进行数据传输.但是两个的区别就是TCP可靠,UDP不可靠.两个的共同之处就是都需要建立socket套接字,将IP地址和端口port进行绑定.但是服务 ...