http://www.cnblogs.com/cxd4321/archive/2011/05/31/2064843.html
此处用mysql中的sql语句做例子,C# 驱动用的是samus,也就是上文中介绍的第一种.
引入项目MongoDB.dll
//创建Mongo连接
var mongo = new Mongo("mongodb://localhost");
mongo.Connect();
//获取一个数据库,如果没有会自动创建一个
var db = mongo.GetDatabase("movieReviews");
//创建一个列表,并为这个列表创建文档
var movies = db.GetCollection("movies");
连接没问题之后,现在让我们用mysql 与mongodb的一些语句做下对比:
MongoDB | Mysql | |
查询全部 | movies.find(new Document()) | SELECT * FROM movies |
条件查询 | movies.Find(new Document { { "title", "Hello Esr" } }); | SELECT * FROM movies WHERE title= 'foobar' |
查询数量 | movies.Find(new Document { { "title", "测试2" } }).Documents.Count(); | SELECT COUNT(*) FROM movies WHERE `title` = 'foobar' |
数量范围查询 | 1, movies.Find(new Document().Add("$where", new Code("this.num > 50"))); 2, movies.Find(new Document().Add("num", new Document().Add("$gt",50))); ($gt : > ; $gte : >= ; $lt : < ; $lte : <= ; $ne : !=) 3,movies.Find("this.num > 50"); 4,movies.Find(new Document().Add("$where",new Code("function(x){ return this.num > 50};"))); |
select * from movies where num > 50 |
分页查询 | movies.Find(new Document()).Skip(10).Limit(20); | SELECT * FROM movies limit 10,20 |
查询排序语句 | movies.Find(new Document()).Sort(new Document() { { "num", -1 } }); | SELECT * FROM movies ORDER BY num DESC |
查询指定字段 | movies.Find(new Document().Add("num", new Document().Add("$gt", 50)), 10, 0, new Document() { { "title", 1 } }); | select title from movies where num > 50 |
插入语句 | movies.Insert(new Document() { { "title", "测试" }, { "resuleData", DateTime.Now } }); | INSERT INOT movies (`title`, `reauleDate`) values ('foobar',25) |
删除语句 | movies.Remove(new Document() { { "title", "Hello Esr" } }); | DELETE * FROM movies |
更新语句 |
movies.Update(new Document() { { "title", "测试2" } } |
UPDATE movies SET `title` = ‘测试1111’ WHERE `title` = '测试1111' |
Linq查询 |
(from item in db.GetCollection("movies").Linq() |
select * from movies where title like ‘%Esr’ |
这里只举出了几个比较典型的例子,可以这么说,只要mysql可以完成的sql语句,在mongodb里面都可以实现.
SQL Statement |
Mongo Query Language Statement |
CREATE TABLE USERS (a Number, b Number) |
db.createCollection( "mycoll", {capped:true , size:100000}) |
INSERT INTO USERS VALUES(1,1) |
db.users.insert({a:1,b:1}) |
SELECT a,b FROM users |
db.users.find({}, {a:1,b:1}) |
SELECT * FROM users |
db.users.find() |
SELECT * FROM users WHERE age=33 |
db.users.find({age:33}) |
SELECT a,b FROM users WHERE age=33 |
db.users.find({age:33}, {a:1,b:1}) |
SELECT * FROM users WHERE age=33 ORDER BY name |
db.users.find({age:33}).sort({name:1}) |
SELECT * FROM users WHERE age>33 |
db.users.find({'age':{$gt:33}})}) |
SELECT * FROM users WHERE age<33 |
db.users.find({'age':{$lt:33}})}) |
SELECT * FROM users WHERE name LIKE "%Joe%" |
db.users.find({name:/Joe/}) |
SELECT * FROM users WHERE name LIKE "Joe%" |
db.users.find({name:/^Joe/}) |
SELECT * FROM users WHERE age>33 AND age<=40 |
db.users.find({'age':{$gt:33,$lte:40}})}) |
SELECT * FROM users ORDER BY name DESC |
db.users.find().sort({name:-1}) |
CREATE INDEX myindexname ON users(name) |
db.users.ensureIndex({name:1}) |
CREATE INDEX myindexname ON users(name,ts DESC) |
db.users.ensureIndex({name:1,ts:-1}) |
SELECT * FROM users WHERE a=1 and b='q' |
db.users.find({a:1,b:'q'}) |
SELECT * FROM users LIMIT 10 SKIP 20 |
db.users.find().limit(10).skip(20) |
SELECT * FROM users WHERE a=1 or b=2 |
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } ) |
SELECT * FROM users LIMIT 1 |
db.users.findOne() |
EXPLAIN SELECT * FROM users WHERE z=3 |
db.users.find({z:3}).explain() |
SELECT DISTINCT last_name FROM users |
db.users.distinct('last_name') |
SELECT COUNT(*y) FROM users |
db.users.count() |
SELECT COUNT(*y) FROM users where AGE > 30 |
db.users.find({age: {'$gt': 30}}).count() |
SELECT COUNT(AGE) from users |
db.users.find({age: {'$exists': true}}).count() |
UPDATE users SET a=1 WHERE b='q' |
db.users.update({b:'q'}, {$set:{a:1}}, false, true) |
UPDATE users SET a=a+2 WHERE b='q' |
db.users.update({b:'q'}, {$inc:{a:2}}, false, true) |
DELETE FROM users WHERE z="abc" |
db.users.remove({z:'abc'}); |