MongoDB基础语句(Navicat)
// insert语句
db.sms_sensitive_words.insert({
createdBy: "MEAN",
createdAt: ISODate("2022-12-19 16:45:06"),
keyword: "长毛怪怪",
status: "ENABLE"
})
// select语句(ALL、and、or)
db.sms_sensitive_words.count();
db.sms_sensitive_words.find({}).explain("executionStats"); // 查询执行统计信息
db.sms_sensitive_words.find().pretty(); // 格式化查询
db.sms_sensitive_words.find({createdBy: "MEAN", status: "ENABLE"})
db.sms_sensitive_words.find({$and:[{createdBy: "MEAN"}, {status: "ENABLE"}]})
db.sms_sensitive_words.find({$or:[{createdBy: "MEAN"}, {status: "ENABLE"}]})
// update语句(首参为条件,后参为更新参数)
db.sms_sensitive_words.update({createdBy: "MEAN"}, {$set: {keyword: "长毛怪挂", createdBy: "test"}})
db.sms_sensitive_words.update({createdBy: "test"}, {$set: {keyword: "长毛怪挂"}}, {$unset: {status: 1}})
db.sms_sensitive_words.update({createdBy: "test"}, {$set: {keyword: { minganci: ["长毛怪挂","拉喀什","疆独"], bumingan: ["习大大","砥砺前行","大爱无疆"]}}})
// delete语句
db.sms_sensitive_words.remove({keyword: "舔狗"})
// 创建索引
db.sms_sensitive_words.createIndex({num: 1});
db.sms_sensitive_words.getIndexes();
// 帮助
db.help()
// 状态
db.sms_sensitive_words.stats()
// 命令方式查看状态
db.runCommand({dbstats: 1})
// 循环
for (var i = 0; i < 20; i++) {
printjson(i);
// db.sms_sensitive_words.save({num: i})
}
// 输出所有数据库
show dbs;
// 输出所有集合
show collections;
// MongoDB中条件操作符有:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
db.sms_sensitive_words.find({likes : {$gt : 100}})
类似于SQL语句:
Select * from sms_sensitive_words where likes > 100;
// MongoDB 操作符 - $type 实例
db.sms_sensitive_words.find({"title" : {$type : 2}})
或
db.sms_sensitive_words.find({"title" : {$type : 'string'}})
// 分页: limit()方法基本语法如下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
db.sms_sensitive_words.find({},{"title":1,_id:0}).limit(2)
// 跳过:Skip() 方法 跳过指定数量的数据
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
db.sms_sensitive_words.find({},{"title":1,_id:0}).limit(1).skip(1)
// 排序:sort()方法基本语法如下所示:
>db.COLLECTION_NAME.find().sort({KEY:1})
db.sms_sensitive_words.find({},{"title":1,_id:0}).sort({"likes":-1})
// 索引:createIndex()方法基本语法格式如下所示:(1:升序; -1降序;)
>db.collection.createIndex(keys, options)
db.col.createIndex({"title":1,"description":-1})
// 聚合:aggregate() 方法的基本语法格式如下所示:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
以上实例类似sql语句:GROUP BY
select by_user, count(*) from mycol group by by_user;
表达式描述实例
$sum 计算总和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 计算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 将值加入一个数组中,不会判断是否有重复的值。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 将值加入一个数组中,会判断是否有重复的值,若相同的值在数组中已经存在了,则不加入。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
1、$project实例
db.article.aggregate(
{ $project : {
title : 1 ,
author : 1 ,
}}
);这样的话结果中就只还有_id,tilte和author三个字段了,默认情况下_id字段是被包含的,如果要想不包含_id话可以这样:
db.article.aggregate(
{ $project : {
_id : 0 ,
title : 1 ,
author : 1
}});
2.$match实例
db.articles.aggregate( [
{ $match : { score : { $gt : 70, $lte : 90 } } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
3.$skip实例
db.article.aggregate(
{ $skip : 5 });
经过$skip管道操作符处理后,前五个文档被"过滤"掉。
- Java链接MongoDB
// 连接数据库,你需要指定数据库名称,如果指定的数据库不存在,mongo会自动创建数据库。
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC{
public static void main( String args[] ){
try{
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
System.out.println("Connect to database successfully");
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
// 本实例中 Mongo 数据库无需用户名密码验证。如果你的 Mongo 需要验证用户名及密码,可以使用以下代码:
import java.util.ArrayList;
import java.util.List;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC {
public static void main(String[] args){
try {
//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost",27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(addrs,credentials);
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");
System.out.println("Connect to database successfully");
// 1 创建集合
mongoDatabase.createCollection("test");
System.out.println("集合创建成功");
MongoCollection<Document> collection = mongoDatabase.getCollection("test");
System.out.println("集合 test 选择成功");
// 2 插入文档
/**
* 1. 创建文档 org.bson.Document 参数为key-value的格式
* 2. 创建文档集合List<Document>
* 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document)
* */
Document document = new Document("title", "MongoDB").
append("description", "database").
append("likes", 100).
append("by", "Fly");
List<Document> documents = new ArrayList<Document>();
documents.add(document);
collection.insertMany(documents);
System.out.println("文档插入成功");
// 3 检索所有文档
/**
* 1. 获取迭代器FindIterable<Document>
* 2. 获取游标MongoCursor<Document>
* 3. 通过游标遍历检索出的文档集合
* */
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
System.out.println(mongoCursor.next());
}
// 4 更新文档
// 将文档中likes=100的文档修改为likes=200
collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));
//检索查看结果
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
System.out.println(mongoCursor.next());
}
// 5 删除文档
//删除符合条件的第一个文档
collection.deleteOne(Filters.eq("likes", 200));
//删除所有符合条件的文档
collection.deleteMany (Filters.eq("likes", 200));
//检索查看结果
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
System.out.println(mongoCursor.next());
}
} catch (Exception e) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}