Skip to content

DOCS-535 SQL to MongoDB mapping #391

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 12, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion bin/makefile.tables
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
.PHONY: tables clean-tables

# add each built table to this variable here:
output-tables = source/includes/table-sql-to-agg-examples.rst source/includes/table-sql-to-agg-terms.rst
output-tables = source/includes/table-sql-to-agg-examples.rst source/includes/table-sql-to-agg-terms.rst \
source/includes/table-sql-to-mongo-executables.rst source/includes/table-sql-to-mongo-terms.rst \
source/includes/table-sql-to-mongo-schema-examples.rst source/includes/table-sql-to-mongo-insert-examples.rst \
source/includes/table-sql-to-mongo-select-examples.rst source/includes/table-sql-to-mongo-update-examples.rst \
source/includes/table-sql-to-mongo-delete-examples.rst
tables: $(output-tables)
@git update-index --assume-unchanged #
@echo [build]: clensing git index of $(output-tables)
Expand All @@ -23,4 +27,25 @@ source/includes/table-sql-to-agg-terms.rst:source/includes/table-sql-to-agg-term
source/includes/table-sql-to-agg-examples.rst:source/includes/table-sql-to-agg-examples.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build
source/includes/table-sql-to-mongo-executables.rst:source/includes/table-sql-to-mongo-executables.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build
source/includes/table-sql-to-mongo-terms.rst:source/includes/table-sql-to-mongo-terms.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build
source/includes/table-sql-to-mongo-schema-examples.rst:source/includes/table-sql-to-mongo-schema-examples.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build
source/includes/table-sql-to-mongo-insert-examples.rst:source/includes/table-sql-to-mongo-insert-examples.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build
source/includes/table-sql-to-mongo-select-examples.rst:source/includes/table-sql-to-mongo-select-examples.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build
source/includes/table-sql-to-mongo-update-examples.rst:source/includes/table-sql-to-mongo-update-examples.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build
source/includes/table-sql-to-mongo-delete-examples.rst:source/includes/table-sql-to-mongo-delete-examples.yaml
@$(PYTHONBIN) bin/table_builder.py $< $@
@echo [table-builder]: \(re\)generate $@ table for inclusion in build

1 change: 1 addition & 0 deletions source/contents.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ MongoDB Manual Contents
use-cases
faq
reference
sql
38 changes: 38 additions & 0 deletions source/includes/table-sql-to-mongo-delete-examples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# table structure. all content symbolic.
section: layout
header: [ meta.header1, meta.header2, meta.header3]
rows:
- 1: [ content.sql1, content.mongo1, content.ref1 ]
- 2: [ content.sql2, content.mongo2, content.ref1 ]
---
# table metadata, as meta.<key>
section: meta
header1: "SQL Delete Statements"
header2: "MongoDB remove() Statements"
header3: "Reference"
---
# table content, as content.<key>
section: content
sql1: |
.. code-block:: sql

DELETE FROM users
WHERE status = "D"
mongo1: |
.. code-block:: javascript
:emphasize-lines: 1

db.users.remove( { status: "D" } )
ref1: |
See :method:`remove() <db.collection.remove()>`
for more information.
sql2: |
.. code-block:: sql

DELETE FROM users
mongo2: |
.. code-block:: javascript
:emphasize-lines: 1

db.users.remove( )
...
22 changes: 22 additions & 0 deletions source/includes/table-sql-to-mongo-executables.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# table structure. all content symbolic.
section: layout
header: [ meta.header1, meta.header2, meta.header3 ]
rows:
- 1: [ content.desc1, content.sql1, content.mongo1 ]
- 2: [ content.desc2, content.sql2, content.mongo2 ]
---
# table metadata, as meta.<key>
section: meta
header1: " "
header2: "MySQL/Oracle"
header3: "MongoDB"
---
# table content, as content.<key>
section: content
desc1: Database Server
sql1: mysqld/oracle
mongo1: :doc:`mongod </reference/mongod>`
desc2: Database Client
sql2: mysql/sqlplus
mongo2: :doc:`mongo </reference/mongo>`
...
37 changes: 37 additions & 0 deletions source/includes/table-sql-to-mongo-insert-examples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# table structure. all content symbolic.
section: layout
header: [ meta.header1, meta.header2, meta.header3]
rows:
- 1: [ content.sql1, content.mongo1, content.ref1 ]
---
# table metadata, as meta.<key>
section: meta
header1: "SQL INSERT Statements"
header2: "MongoDB insert() Statements"
header3: "Reference"
---
# table content, as content.<key>
section: content
sql1: |

.. code-block:: sql

INSERT INTO users(user_id,
age,
status)
VALUES ("bcd001",
45,
"A")
mongo1: |
.. code-block:: javascript
:emphasize-lines: 1-5

db.users.insert( {
user_id: "bcd001",
age: 45,
status: "A"
} )
ref1: |
See :method:`insert() <db.collection.insert()>`
for more information.
...
135 changes: 135 additions & 0 deletions source/includes/table-sql-to-mongo-schema-examples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# table structure. all content symbolic.
section: layout
header: [ meta.header1, meta.header2, meta.header3]
rows:
- 1: [ content.sql1, content.mongo1, content.ref1 ]
- 2: [ content.sql2, content.mongo2, content.ref2 ]
- 3: [ content.sql3, content.mongo3, content.ref3 ]
- 4: [ content.sql4, content.mongo4, content.ref4 ]
- 5: [ content.sql5, content.mongo5, content.ref4 ]
- 6: [ content.sql6, content.mongo6, content.ref6 ]
---
# table metadata, as meta.<key>
section: meta
header1: "SQL Schema Statements"
header2: "MongoDB Schema Statements"
header3: "Reference"
---
# table content, as content.<key>
section: content
sql1: |
.. code-block:: sql

CREATE TABLE users (
id MEDIUMINT NOT NULL
AUTO_INCREMENT,
user_id Varchar(30),
age Number,
status char(1),
PRIMARY KEY (id)
)
mongo1: |
Implicitly created on first :method:`insert
<db.collection.insert()>` operation. The primary key ``_id`` is
automatically added if ``_id`` field is not specified.

.. code-block:: javascript
:emphasize-lines: 1-5

db.users.insert( {
user_id: "abc123",
age: 55,
status: "A"
} )

However, you can also explicitly create a table:

.. code-block:: javascript
:emphasize-lines: 1

db.createCollection("users")
ref1: |
See
:method:`insert() <db.collection.insert()>` and
:method:`createCollection() <db.createCollection()>`
for more information.
sql2: |
.. code-block:: sql

ALTER TABLE users
ADD join_date DATETIME
mongo2: |
Update operations can add fields to all documents in a
collection:

.. code-block:: javascript
:emphasize-lines: 1-5

db.users.update(
{ },
{ $set: { join_date: null } },
{ multi: 1 }
)

Because each :term:`document` determines its own fields, a
document may contain fields not contained by the other
documents in the collection.
ref2: |
See :method:`update() <db.collection.update()>` and
:operator:`$set` for more information.
sql3: |
.. code-block:: sql

ALTER TABLE users
DROP COLUMN join_date
mongo3: |
Update operations can remove fields from all documents in a
collection:

.. code-block:: javascript
:emphasize-lines: 1-5

db.users.update(
{ },
{ $unset: { join_date: "" } },
{ multi: 1 }
)
ref3: |
See :method:`update() <db.collection.update()>`
and :operator:`$unset` for more information.
sql4: |
.. code-block:: sql

CREATE INDEX idx_user_id_asc
ON users(user_id)
mongo4: |
.. code-block:: javascript
:emphasize-lines: 1

db.users.ensureIndex( { user_id: 1 } )
ref4: |
See :method:`ensureIndex() <db.collection.ensureIndex()>`
and :doc:`indexes </core/indexes>` for more information.
sql5: |
.. code-block:: sql

CREATE INDEX idx_user_id_asc_age_desc
ON users(name, age DESC)
mongo5: |
.. code-block:: javascript
:emphasize-lines: 1

db.users.ensureIndex( { user_id: 1, age: -1 } )
sql6: |
.. code-block:: sql

DROP TABLE users
mongo6: |
.. code-block:: javascript
:emphasize-lines: 1

db.users.remove()
ref6: |
See :method:`remove() <db.collection.remove()>` for
more information.
...
Loading