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类似,通过数据库命令来调用

 

posted @ 2021-02-13 16:59  牧云文仔  阅读(278)  评论(0编辑  收藏  举报