驱动和客户端库

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. UTF-8 带签名和不带签名的区别

    就和字面上一样,带签名的UTF-8文件比不带签名的,在文件开头的地方就多了几个16进制字符--[EF BB BF ],这9个字符就是"签名",这样做的好处是让文本处理工具或者浏览器 ...

  2. python数字图像处理(12):基本图形的绘制

    图形包括线条.圆形.椭圆形.多边形等. 在skimage包中,绘制图形用的是draw模块,不要和绘制图像搞混了. 1.画线条 函数调用格式为: skimage.draw.line(r1,c1,r2,c ...

  3. Android 编程下 Touch 事件的分发和消费机制

    Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...

  4. C++系列: 如何将十六机制的字符串转成整数

    bool convertHexStringToInt(char* pstrHex, unsigned long* pResult) { ) return false; else return true ...

  5. [CareerCup] 3.2 Min Stack 最小栈

    3.2 How would you design a stack which, in addition to push and pop, also has a function min which r ...

  6. 启动页面设置,icon图标设置

    更多尺寸像素如何放置请看:http://chicun.jammy.cc/ 如何设置App的启动图,也就是Launch Image? 新建一个iosLaunchImage文件夹

  7. google map api v2的使用详细过程,图文并茂(原创)

    上一篇中说到怎么获取key,下面来介绍怎么使用key来显示google地图 步骤1:eclipse上打开android SDK Manager,安装google play services. 步骤2: ...

  8. WPF MVVM实现TreeView

    今天有点时间,做个小例子WPF MVVM 实现TreeView 只是一个思路大家可以自由扩展 文章最后给出了源码下载地址 图1   图2     模版加上了一个checkbox,选中父类的checkb ...

  9. QQ提醒的功能

    原文出处:http://www.cnblogs.com/xiexingen/archive/2013/04/09/3009921.html http://qzs.qq.com/snsapp/app/b ...

  10. [USACO 1.5.4]checker(水题重做——位运算(lowbit的应用))

    描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 0 1 2 3 4 5 6 ------- ...