zoukankan      html  css  js  c++  java
  • MongoDB & Morphia

    一、安装

    服务器:

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html

    客户端:

    mongochef

    二、命令

    db.currentOp()   查看后台操作

    db.killOp(547553080)  杀死后台操作

    db.Folder.find({"FdI": "dfc5b4e4a12f49519b70d9e4d91dfb91"}) 查找表里的记录

    db.Folder.find()  查找表里所有数据

    db.Folder.ensureIndex({FdI: 1}) 对某个字段添加索引

    db.Folder.getIndexes()  获取所有索引

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html

    三、Java操作mongo

    http://www.cnblogs.com/hoojo/archive/2011/06/02/2068665.html

    四、Morphia, 即mongo的ORM框架,相当于mybatis或者Entity Framework

    1. 实例化Morphia

    Morphia morphia = new Morphia();
    
    // 告诉Morphia在哪里找到你的类
    // 可以为不同的包或者类进行多次的调用
    morphia.mapPackage("org.mongodb.morphia.example");
    
    //创建datastore,并连接到指定数据库
    //datastore有两个参数,第一个用来连接到MongoDB,第二个是数据库的名字
    final Datastore datastore = morphia.createDatastore(new MongoClient(), "morphia_example");
    
    datastore.ensureIndexes();

    2. 映射类

    @Entity("employees") // 顶级实体
    @Indexes(
        @Index(value = "salary", fields = @Field("salary"),options=@IndexOptions(name="salary_1")) // 索引
    )
    class Employee {
        @Id // 必须要有id,主键
        private ObjectId id;
        private String name;
        @Reference //引用其他实体
        private Employee manager;
        @Reference
        private List<Employee> directReports;
        @Property("wage") // 用非mongo存储的字段名称
        private Double salary;
    }

    3. 保存数据

    final Employee elmer = new Employee("Elmer Fudd", 50000.0);
    datastore.save(elmer);

    4. 查询

    final Query<Employee> query = datastore.createQuery(Employee.class);
    final List<Employee> employees = query.asList();

    underpaid = datastore.createQuery(Employee.class)
                         .field("salary").lessThanOrEq(30000)
                         .asList();

    5. 更新

    // 查询
    final Query<Employee> underPaidQuery = datastore.createQuery(Employee.class)
                                                 .filter("salary <=", 30000);
    
    // 创建更新实例
    final UpdateOperations<Employee> updateOperations = datastore.createUpdateOperations(Employee.class)
                                                       .inc("salary", 10000);
    
    // 更新
    final UpdateResults results = datastore.update(underPaidQuery, updateOperations);

    6. 删除

    final Query<Employee> overPaidQuery = datastore.createQuery(Employee.class)
                                                    .filter("salary >", 100000);
    datastore.delete(overPaidQuery);

    五、Mongo聚合函数

    1. 在关系型数据库里,可以执行聚合函数:sum(), count(), max(), min()

    2. 在mongo里,使用MapReduce实现聚合及批处理,跟Group by类似,通过数据库命令来调用

  • 相关阅读:
    SolrCloud-5.2.1 集群部署及测试
    提问的艺术
    Zookeeper集群部署
    Linux基本操作命令总结
    LeetCode——Gray Code
    LeetCode——Find the Duplicate Number
    如何拿到国内IT巨头的Offer
    LeetCode—— Median of Two Sorted Arrays
    LeetCode——Merge k Sorted Lists
    CSS常见Bugs及解决方案列表
  • 原文地址:https://www.cnblogs.com/june0816/p/5787491.html
Copyright © 2011-2022 走看看