mongodb 入门笔记

0. mongoDB基础概念

  • 文档
    • 可类比为关系数据库中的行
    • 多个键及其关联的值
    • 其中键值是有序的
    • 区分类型及大小写
    • 键是唯一的,若重复则认为定义非法
  • 集合
    • 可类比为关系数据库中的表
    • 一组文档
    • 可采用命名空间划分子集合,如“blog.class1”,“blog.class2”
  • 数据库
    • 多个集合
    • 一个mongodb实例可支持多个数据库;
    • 每个数据库相对独立,具备独立的权限控制,且物理上属于不同的硬件;

1. mongoDB 安装

  • 下载mongodb-win32-i386-2.4.1并解压至本地目录
  • 在相应目录下创建data/db 文件夹
  • 执行mongod.exe -dbpath ./data/db,此时提示“waiting for connectoin on port 27017”
  • 在浏览器中登入 localhost:27017
  • 之后在浏览器登入 localhost:28017
  • 重新启动一个控制台,执行mongo.exe,成功!

2. mongoDB操作与mysql SQL语句对应关系,参考《mongoDB使用手册》

db.test.find({'name':'foobar'}) <==> select * from test where name='foobar' 
db.test.find() <==> select * from test 
db.test.find({'ID':10}).count() <==> select count(*) from test where ID=10 
db.test.find().skip(10).limit(20) <==> select * from test limit 10,20 
db.test.find({'ID':{$in:[25,35,45]}}) <==> select * from test where ID in (25,35,45) 
db.test.find().sort({'ID':-1}) <==> select * from test order by ID desc 
db.test.distinct('name',{'ID':{$lt:20}}) <==> select distinct(name) from test where ID<20 
db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}}) <==> select name,sum(marks) from test group by name 
db.test.find('this.ID<20',{name:1}) <==> select name from test where ID<20 
db.test.insert({'name':'foobar','age':25})<==>insert into test ('name','age') values('foobar',25) 
db.test.remove({}) <==> delete * from test 
db.test.remove({'age':20}) <==> delete test where age=20 
db.test.remove({'age':{$lt:20}}) <==> elete test where age<20 
db.test.remove({'age':{$lte:20}}) <==> delete test where age<=20 
db.test.remove({'age':{$gt:20}}) <==> delete test where age>20 
db.test.remove({'age':{$gte:20}}) <==> delete test where age>=20 
db.test.remove({'age':{$ne:20}}) <==> delete test where age!=20 
db.test.update({'name':'foobar'},{$set:{'age':36}}) <==> update test set age=36 where name='foobar' 
db.test.update({'name':'foobar'},{$inc:{'age':3}}) <==> update test set age=age+3 where name='foobar'

3. mongoDB java操作例子

  • 建立普通java project,导入jar包:mongo-2.X.X.jar
  • 代码如下,只试简单特性:
public class App {
    
    private static void showAll(DBCollection foo){
        System.out.println("**** start showAll ****");
        DBCursor cur = foo.find();
        while(cur.hasNext()){
            System.out.println(cur.next());
        }
    }
    /**
     * @param args
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws UnknownHostException {
        // TODO Auto-generated method stub
        Mongo mg = new Mongo();
        
        //数据库
        for(String name:mg.getDatabaseNames()){
            System.out.println(name);
        }
        
        DB db = mg.getDB("test");
        
        //聚集集合
        for(String name:db.getCollectionNames()){
            System.out.println(name);
        }
        
        DBCollection foo = db.getCollection("foo");
        showAll(foo);
        
        //插入数据
        DBObject foo1 = new BasicDBObject();
        foo1.put("id", "2013");
        foo1.put("name", "sinny");
        foo.save(foo1);
        
        showAll(foo);
        
        //删除数据
        foo.remove(new BasicDBObject("name", "sinny"));
        
        showAll(foo);
        
        //修改数据
        foo.update(new BasicDBObject("name","fredric"),
                new BasicDBObject("name","new fredric"));
        
        showAll(foo);                
    }
}
  • 控制台打印结果如下:

posted @ 2013-04-16 14:11  Fredric_2013  阅读(270)  评论(0编辑  收藏  举报