mongdb的使用

一、docker安装mongdb

1、从dockerHub官网获取镜像

  • docker pull mongo

2、这里的--name 放在前面并映射端口

  • docker run --name some-mongo -p 27017:27017 -d mongo --auth

3、进入容器

  • docker exec -it 容器ID /bin/bash

4、进入容器内部,创建用户,然后退出

mongo  
 
use admin
 
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})   //创建用户,此用户创建成功,则后续操作都需要用户认证
 
exit  
复制代码

二、mongdb插入文档

1、插入文档

>db.user.insert({title: '人员信息', 
    description: '人员描述',
    by: '身份证获取',
    url: 'http://www.fhero.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
复制代码

以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档

2、查看已插入文档

三、Morphia 框架的使用

1、加入依赖

<dependencies>
    <dependency>
        <groupId>xyz.morphia</groupId>
        <artifactId>morphia</artifactId>
        <version>1.4.0</version>
    </dependency>
</dependencies>
复制代码

2、加载实体和

@Configuration
public Datastore morphiaConfig(){
    @Value("${host}")
    private String host;
    @Value("${port}")
    private String port
    @Value("${Database}")
    private String Database;
     final Morphia morphia = new Morphia();
        // tell morphia where to find your classes
        // can be called multiple times with different packages or classes
        morphia.mapPackage("xyz.morphia.example");

        // create the Datastore connecting to the database running on the default port on the local host
        final Datastore datastore = morphia.createDatastore(new MongoClient(host),port,Database);
        datastore.getDB().dropDatabase();
        datastore.ensureIndexes();
        return datastore;
}
复制代码

3、实体

@Entity("employees")
@Indexes(@Index(value = "salary", fields = @Field("salary")))
class Employee {
    @Id
    private ObjectId id;
    private String name;
    private Integer age;
    @Reference
    private Employee manager;
    @Reference
    private List<Employee> directReports = new ArrayList<Employee>();
    @Property("wage")
    private Double salary;

    public Employee() {
    }

    public Employee(final String name, final Double salary) {
        this.name = name;
        this.salary = salary;
    }

    public List<Employee> getDirectReports() {
        return directReports;
    }

    public void setDirectReports(final List<Employee> directReports) {
        this.directReports = directReports;
    }

    public ObjectId getId() {
        return id;
    }

    public Employee getManager() {
        return manager;
    }

    public void setManager(final Employee manager) {
        this.manager = manager;
    }

    public String getName() {
        return name;
    }

    public void setName(final String name) {
        this.name = name;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(final Double salary) {
        this.salary = salary;
    }
}
复制代码

必须加无参构造器,不然会报错

4、持久层

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

        final Employee daffy = new Employee("Daffy Duck", 40000.0);
        datastore.save(daffy);

        final Employee pepe = new Employee("Pepé Le Pew", 25000.0);
        datastore.save(pepe);

        elmer.getDirectReports().add(daffy);
        elmer.getDirectReports().add(pepe);

        datastore.save(elmer);

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

        Assert.assertEquals(3, employees.size());

        List<Employee> underpaid = datastore.find(Employee.class)
                                            .filter("salary <=", 30000)
                                            .asList();
        Assert.assertEquals(1, underpaid.size());

        underpaid = datastore.find(Employee.class)
                             .field("salary").lessThanOrEq(30000)
                             .asList();
        Assert.assertEquals(1, underpaid.size());

        final Query<Employee> underPaidQuery = datastore.find(Employee.class)
                                                        .filter("salary <=", 30000);
        final UpdateOperations<Employee> updateOperations = datastore.createUpdateOperations(Employee.class)
                                                                     .inc("salary", 10000);

        final UpdateResults results = datastore.update(underPaidQuery, updateOperations);

        Assert.assertEquals(1, results.getUpdatedCount());

        final Query<Employee> overPaidQuery = datastore.find(Employee.class)
                                                       .filter("salary >", 100000);
        datastore.delete(overPaidQuery);
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值