909413335 发表于 2011-12-22 08:53

MongoDB 语法和SQL语法对应表

<table class="confluenceTable"><tbody><tr><th class="confluenceTh">SQL Statement <br class="atl-forced-newline"> </th>
<th class="confluenceTh"> Mongo Statement <br class="atl-forced-newline"> </th>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
CREATE TABLE USERS (a <span class="code-object">Number</span>, b <span class="code-object">Number</span>)
</div></div> </td>
<td class="confluenceTd"> implicit; can also be done <a href="http://www.mongodb.org/display/DOCS/createCollection+Command" title="createCollection Command" target="_blank">explicitly</a> with <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.createCollection(<span class="code-quote">"mycoll"</span>)
</div></div></td>
</tr>
<tr>
</tr>
<tr>
<th class="confluenceTh">&nbsp;</th>
<th class="confluenceTh">&nbsp;</th>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
INSERT INTO USERS VALUES(3,5)
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.insert({a:3,b:5})
</div></div> </td>
</tr>
<tr>
<th class="confluenceTh">&nbsp;</th>
<th class="confluenceTh">&nbsp;</th>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT a,b FROM users
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({}, {a:1,b:1})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find()
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE age=33
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({age:33})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT a,b FROM users WHERE age=33
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({age:33}, {a:1,b:1})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE age=33 ORDER BY name
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({age:33}).sort({name:1})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE age&gt;33
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({'age':{$gt:33}})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE age&lt;33
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({'age':{$lt:33}})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE name LIKE <span class="code-quote">"%Joe%"</span>
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({name:/Joe/})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE name LIKE <span class="code-quote">"Joe%"</span>
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({name:/^Joe/})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE age&gt;33 AND age&lt;=40
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({'age':{$gt:33,$lte:40}})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users ORDER BY name DESC
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find().sort({name:-1})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE a=1 and b='q'
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({a:1,b:'q'})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users LIMIT 10 SKIP 20
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find().limit(10).skip(20)
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users WHERE a=1 or b=2
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT * FROM users LIMIT 1
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.findOne()
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT DISTINCT last_name FROM users
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.distinct('last_name')
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT COUNT(*y)
FROM users
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.count()
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT COUNT(*y)
FROM users where AGE &gt; 30
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({age: {'$gt': 30}}).count()
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
SELECT COUNT(AGE) from users
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({age: {'$exists': <span class="code-keyword">true</span>}}).count()
</div></div> </td>
</tr>
<tr>
<th class="confluenceTh">&nbsp;</th>
<th class="confluenceTh">&nbsp;</th>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
CREATE INDEX myindexname ON users(name)

</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.ensureIndex({name:1})
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
CREATE INDEX myindexname ON users(name,ts DESC)

</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.ensureIndex({name:1,ts:-1})
</div></div> </td>
</tr>
<tr>
<th class="confluenceTh">&nbsp;</th>
<th class="confluenceTh">&nbsp;</th>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
EXPLAIN SELECT * FROM users WHERE z=3
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.find({z:3}).explain()
</div></div> </td>
</tr>
<tr>
<th class="confluenceTh">&nbsp;</th>
<th class="confluenceTh">&nbsp;</th>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
UPDATE users SET a=1 WHERE b='q'
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.update({b:'q'}, {$set:{a:1}}, <span class="code-keyword">false</span>, <span class="code-keyword">true</span>)
</div></div> </td>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
UPDATE users SET a=a+2 WHERE b='q'
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.update({b:'q'}, {$inc:{a:2}}, <span class="code-keyword">false</span>, <span class="code-keyword">true</span>)
</div></div> </td>
</tr>
<tr>
<th class="confluenceTh">&nbsp;</th>
<th class="confluenceTh">&nbsp;</th>
</tr>
<tr>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
DELETE FROM users WHERE z=<span class="code-quote">"abc"</span>
</div></div> </td>
<td class="confluenceTd"> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
db.users.remove({z:'abc'});
</div></div></td></tr></tbody></table>
页: [1]
查看完整版本: MongoDB 语法和SQL语法对应表