null({"x" : null}),布尔类型({"x" : true}),数值类型({"x" : 2.32} , {"x" : 2},{"x" : NumberInt(2)},{"x" : NumberLong(2)}),字符串({"x" : "123@qq.com"}),日期类型({"x" : new Date()}),数组({"x" : ["vvvv", "77777"]}),内嵌文档({"x" : {"name" : "vvv"}}),文档的_id和_Object({"_id" : ObjectId()})
#登录
>mongo ip地址 //默认端口号27017
#退出
>exit
#查看数据库
>show dbs
#切换数据库,这个指令也可以直接创建数据库,但只有添加数据后,show dbs才能看到该数据库
>use 数据库名
#查看当前数据库,默认数据库:test
>db
#查看所有的数据集
>show collections
#删除当前数据库
>db.dropDatabase()
#创建集合(相当于创建表)
>db.createCollection("user1")
#删除集合
>db.collectionName.drop()
#集合重命名
>db.oldCollectionName.renameCollection("newName")
#新增数据
>db.collectionName.insert({"key":value,"key":value})
>db.collectionName.save({"key":value,"key":value})
#查询所有数据
>db.collectionName.find()
#条件查询
#find()以非结构化的方式展示文档
>db.collectionName.find({"age":26}) //查询等值关系
>db.collectionName.find({age : {$gt : 100}}) // 大于100
>db.collectionName.find({age : {$gte : 100}}) //大于等于100
>db.collectionName.find({age : {$lt : 150}}) //小于150
>db.collectionName.find({age : {$lte : 150}}) //小于等于150
>db.collectionName.find({age : {$lt :200, $gt : 100}}) //大于100,小于200
#如果你需要以易读的方式来读取数据,可以使用 pretty() 方法
>db.collectionName.find().pretty()
#查询一条数据
>db.collectionName.findOne();
#查询指定列
> db.collectionName.find({},{name:1,age:1,sex_orientation:true})
#查询指定字段的数据,并去重
> db.collectionName.distinct('sex')
#对结果集排序
> db.collectionName.find().sort({salary:1}) //升序
> db.collectionName.find().sort({salary:-1}) //降序
#统计记录数
> db.collectionName.find().count()
#查询限定条数
>db.collectionName.find().limit(number)
#and 关系:MongoDB 的 fifind() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件
>db.collectionName.find({key1:value1, key2:value2}).pretty()
#or关系:MongoDB OR 条件语句使用了关键字 $or
>db.collectionName.find({$or: [ {key1: value1}, {key2:value2}]}).pretty()
#清空集合数据
>db.collectionName.remove({})
#条件删除:remove({key:value})
#删除满足条件的一条数据:remove({key:value},1)
#更新数据
db.collectionName.update(<query>,<update>,{upsert: <boolean>, multi: <boolean>)
#query: update的查询条件
#update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
#upsert : 可选,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
#multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部#更新。
#示例:
> db.collectionName.update({name:'tom'},{$set:{age:23}},false,true)
#索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。
#创建
>db.collection.createIndex(keys, options)
#默认主键id,索引名叫“_id_”,不能被删除。 可以通过>db.collectionName.getIndexes() 查看
#单列索引
>db.collectionName.createIndex({"title":1}) (1表示正序,-1逆序)
#组合索引
>db.collectionName.createIndex({"userid":1,"username":-1})
#唯一索引
>db.collectionName.CreateIndex({"UserId":1}, { unique: true });
#TTL索引
db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
#删除索引
>db.collectionName.dropIndexes()
>db.collectionName.dropIndex("索引名称")
#drop()集合时,索引也会删除,remove()集合时,索引仍然存在
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
public class Main {
@Test
public void fun(){
// 1.连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("192.168.109.131", 27017);
// 2.连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
System.out.println(mongoDatabase);
//3.创建集合
mongoDatabase.createCollection("student");
// 获得集合
MongoCollection<Document> collection = mongoDatabase.getCollection("student");
//4.新增
Document document = new Document("stu1name", "lisi");
document.append("stu1age", 29);
document.append("sex", "男");
collection.insertOne(document);
System.out.println("成功");
//插入多行时,将document对象添加到List集合中,调取insertMany()
//5.获得所有文档
FindIterable<Document> documents = collection.find();
MongoCursor<Document> iterator = documents.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
//6.更新文档updateOne(),updateMany(条件表达式,新值表达式)
collection.updateMany(Filters.eq("sex","男"),new Document("$set",new Document("name","testzhangsan")));
// 7.删除文档
// 删除20岁用户的信息
collection.deleteOne(Filters.eq("stu1age",20));
}
}
全部评论