zoukankan      html  css  js  c++  java
  • [转]Mongodb 与sql 语句对照

    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" } }
    , new Document() { { "title", "测试11111" } });

    UPDATE movies SET `title` = ‘测试1111’ WHERE `title` = '测试1111'
    Linq查询

    (from item in db.GetCollection("movies").Linq()
    where ((string)item["title"]).StartsWith("Esr")
    select item);

    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'});

  • 相关阅读:
    腾讯Techo开发者大会PPT分享
    构建三维一体立体化监控,看这一篇就够了!
    ACOUG 联合创始人盖国强:万象更新,数据库技术和生态的发展演进
    全局配置项set_global_options 支持的opts
    InitOpts:初始化配置项:
    数据结构第四章树和森林,期末不挂科指南,第7篇
    Netflix:当你按下“播放”的时候发生了什么?
    Netflix:当你按下“播放”的时候发生了什么?
    搭建vsftpd文件服务器并创建虚拟用户
    搭建vsftpd文件服务器并创建虚拟用户
  • 原文地址:https://www.cnblogs.com/w3live/p/2085397.html
Copyright © 2011-2022 走看看