mongodb java 命令_MongoDB学习-->命令行增删改查&JAVA驱动操作Mongodb

大纲如下:

Mongodb介绍/安装

命令行增删改查操作

客户端工具mongochef使用

JAVA驱动操作Mongodb

Spring Data Mongodb框架搭建

Spring Data Mongodb框架之MongoTemplate

Spring Data Mongodb框架之代码连接数据库

Spring Data Mongodb框架之去掉_class字段

Spring Data Mongodb框架之Repository

自增ID通用设置,开发者不用关心

批量更新封装

gridfs文件上传下载操作

DBRef的使用

mapreduce实战

aggregation实战

项目实战:用mongodb设计以及编码实现一个权限系统

mongodb

数据结构不固定的

bson(json)

{id:1,name:"张三"}

{id:2,name:"李四",age:22,address:["上海1号","上海2号"]}

DB

集合(collection) ---> table

文档(document) ---> row

key ---> col

命令行增删改查:

show dbs 展示所有数据库

use test 进入某个数据库

db.createCollection("test"); 创建集合

show collections; 查看集合

db.test2.save({"name":"json"}) 插入数据

db.test2.find() 查询数据

db.test2.findOne() 查询第一条

db.test2.find().skip(1).limit(1)分页用法

db.test.find({}).sort({age:1}) 1升序 -1降序

db.test.find({},{age:1}) 只显示需要的字段 1为显示 -1为不显示

db.test.update({name:"kk"},{"$set":{age:11}},true,true) 第三个参数为true表示要修改的数据不存在则插入一条新的,false不修改也不创建。第四个参数为true表示修改所有满足条件的数据,false修改第一条

db.test.drop() 删除集合

db.test.remove({}) 删除集合中所有数据

JAVA驱动操作Mongodb:

package com.tangzhe.mongodb;

import com.mongodb.MongoClient;

import com.mongodb.MongoClientOptions;

import com.mongodb.ServerAddress;

import com.mongodb.client.FindIterable;

import com.mongodb.client.MongoCollection;

import com.mongodb.client.MongoCursor;

import com.mongodb.client.MongoDatabase;

import com.mongodb.client.model.Filters;

import com.mongodb.client.model.UpdateOptions;

import org.bson.Document;

import org.junit.Before;

import org.junit.Test;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

/**

* Created by 唐哲

* 2018-03-10 18:00

* 测试 Java 操作 MongoDB

*/

public class MongodbTest {

private MongoCollection collection = null;

//@Before

public void before() {

//配置mongo客户端

MongoClientOptions options = MongoClientOptions.builder().connectTimeout(60000).build();

//创建mongo客户端

MongoClient client = new MongoClient(new ServerAddress("localhost", 27017), options);

//获取数据库

MongoDatabase db = client.getDatabase("mamabike");

//获取集合,相当于关系型数据库中的表

collection = db.getCollection("test");

}

/**

* 插入一条数据

*/

//@Test

public void insertOne() {

collection.insertOne(new Document("name", "zhangsan").append("age", 18));

}

/**

* 批量插入

*/

//@Test

public void insertMany() {

List documents = new ArrayList<>(2);

documents.add(new Document("name", "张三").append("age", 19));

documents.add(new Document("name", "李四").append("age", 20));

collection.insertMany(documents);

}

/**

* 修改张三的年龄为22

*/

//@Test

public void updateByName() {

collection.updateOne(Filters.eq("name", "张三"),

new Document("$set", new Document("age", 22)));

}

/**

* 如果查询到则进行修改

* 如果查询不到则插入

*/

//@Test

public void updateOrInsert() {

collection.updateOne(Filters.eq("name", "lisi"),

new Document("$set", new Document("age", 23)),

new UpdateOptions().upsert(true));

}

/**

* 删除一条数据

*/

//@Test

public void deleteOne() {

collection.deleteOne(Filters.eq("name", "lisi"));

}

/**

* 查询第一条数据

*/

//@Test

public void findFirst() {

Document doc = collection.find().first();

System.out.println(doc);

}

/**

* 查询所有

*/

//@Test

public void findAll() {

FindIterable documents = collection.find();

MongoCursor iterator = documents.iterator();

while (iterator.hasNext()) {

System.out.println(iterator.next());

}

}

/**

* 多条件查询

*/

//@Test

public void findByQuery() {

Document doc = collection.find(

Filters.and(

Filters.eq("name", "张三"),

Filters.eq("age", 22)

))

.first();

System.out.println(doc);

}

}

package com.tangzhe.mongodb;

import com.mongodb.MongoClient;

import com.mongodb.MongoClientOptions;

import com.mongodb.ServerAddress;

import com.mongodb.client.MongoCollection;

import com.mongodb.client.MongoDatabase;

import org.bson.codecs.configuration.CodecRegistries;

import org.bson.codecs.configuration.CodecRegistry;

import org.junit.Before;

import org.junit.Test;

/**

* Created by 唐哲

* 2018-03-10 19:39

*/

public class MongodbTest2 {

//可以指定类型

private MongoCollection collection = null;

//@Before

public void before() {

//配置mongo客户端

MongoClientOptions options = MongoClientOptions.builder().connectTimeout(60000).build();

//创建mongo客户端

MongoClient client = new MongoClient(new ServerAddress("localhost", 27017), options);

//获取数据库

MongoDatabase db = client.getDatabase("mamabike");

//注册类型转换器

CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(new UserCode()));

//获取集合,相当于关系型数据库中的表

collection = db.getCollection("test", User.class).withCodecRegistry(codecRegistry);

}

/**

* 插入一个javabean到mongodb

*/

//@Test

public void insertTest() {

User user = new User();

user.setName("王五");

user.setAge(33);

collection.insertOne(user);

}

//从mongodb读取数据,封装成javabean

//@Test

public void findTest() {

User user = collection.find().first();

System.out.println(user);

}

}

package com.tangzhe.mongodb;

import lombok.Data;

import org.bson.types.ObjectId;

/**

* Created by 唐哲

* 2018-03-10 19:38

*/

@Data

public class User {

private ObjectId _id;

private String name;

private Integer age;

}

package com.tangzhe.mongodb;

import org.bson.BsonReader;

import org.bson.BsonWriter;

import org.bson.codecs.Codec;

import org.bson.codecs.DecoderContext;

import org.bson.codecs.EncoderContext;

/**

* Created by 唐哲

* 2018-03-10 19:43

* 转换器

*/

public class UserCode implements Codec {

@Override

public User decode(BsonReader bsonReader, DecoderContext decoderContext) {

bsonReader.readStartDocument();;

User user = new User();

user.set_id(bsonReader.readObjectId("_id"));

user.setName(bsonReader.readString("name"));

user.setAge(bsonReader.readInt32("age"));

bsonReader.readEndDocument();

return user;

}

@Override

public void encode(BsonWriter bsonWriter, User user, EncoderContext encoderContext) {

bsonWriter.writeStartDocument();

bsonWriter.writeString("name", user.getName());

bsonWriter.writeInt32("age", user.getAge());

bsonWriter.writeEndDocument();

}

@Override

public Class getEncoderClass() {

return User.class;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值