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