C語言排序演算法整合
1.介紹及spring boot操作
介紹:
操作:
spring boot註解介紹:
2.概念
3.命令
3.1 基礎命令
show dbs; #展示所有資料庫
use dbname; #切換資料庫
db; #展示當前資料庫名稱
show collections; #展示當前資料庫所有的集合名稱
db.collectionName.find(); #展示collectionName集合下所有記錄
3.2 資料庫操作
db.collectionName.insert({records}); #向不存在的庫中新建一個集合插入一條資料即可新建一個數據庫 db.dropDatabase(); #在要刪除的庫下面執行該命令,即可刪除該庫
3.3 集合操作
3.3.1 建立集合
db.createCollection(name, options) #建立集合
例如:
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
引數說明:
-
name: 要建立的集合名稱
-
options: 可選引數, 指定有關記憶體大小及索引的選項
options 可以是如下引數:
在插入文件時,MongoDB 首先檢查固定集合的 size 欄位,然後檢查 max 欄位。
當插入一些文件時,MongoDB 會自動建立集合
db.mycol2.insert({"name" : "菜鳥教程"})
3.3.2 刪除集合
db.collectionName.drop()
3.4 文件操作
3.4.1 插入文件
db.COLLECTION_NAME.insert(document)
#若插入的資料主鍵已經存在,則會拋 org.springframework.dao.DuplicateKeyException 異常,提示主鍵重複,不儲存當前資料。
db.COLLECTION_NAME.save(document)
#已廢棄,新版本可使用insertOne()或者replaceOne()
3.2 版本之後新增
#向集合插入一個新文件
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
#向集合插入一個多個文件
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
#操作
# 插入單條資料
> var document = db.collection.insertOne({"a": 3})
> document
{
"acknowledged" : true,
"insertedId" : ObjectId("571a218011a82a1d94c02333")
}
# 插入多條資料
> var res = db.collection.insertMany([{"b": 3}, {'c': 4}])
> res
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("571a22a911a82a1d94c02337"),
ObjectId("571a22a911a82a1d94c02338")
]
}
3.4.2 修改操作
**update()方法 **
# 將匹配到的值都進行修改
# <multi>屬性預設是false(不寫就是預設),即每次只修改掃描到的第一條資料;
# 當為true時,修改所有
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
**save()方法 **
# 將匹配到的值都進行修改
# <multi>屬性預設是false(不寫就是預設),即每次只修改掃描到的第一條資料;
# 當為true時,修改所有
db.col.save({
"_id" : ObjectId("5f2374ebb38cdd2108824376"),
"title" : "MongoDB",
"description" : "MongoDB 是一個 Nosql 資料庫",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
3.4.3 刪除操作
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
引數說明:
-
query :(可選)刪除的文件的條件。
-
justOne : (可選)如果設為 true 或 1,則只刪除一個文件,如果不設定該引數,或使用預設值 false,則刪除所有匹配條件的文件。
-
writeConcern :(可選)丟擲異常的級別。
db.col.deleteOne({'title':'MongoDB 教程'});
db.col.deleteMany({'title':'MongoDB 教程'});
3.4.3 查詢操作
db.collection.find(query, projection)
-
query :可選,使用查詢操作符指定查詢條件
-
projection :可選,使用投影操作符指定返回的鍵。查詢時返回文件中所有鍵值, 只需省略該引數即可(預設省略)。
若不指定 projection,則預設返回所有鍵,指定 projection 格式如下,有兩種模式
db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的鍵,不返回其他鍵
db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的鍵,返回其他鍵
_id 鍵預設返回,需要主動指定 _id:0 才會隱藏
兩種模式不可混用(因為這樣的話無法推斷其他鍵是否應返回)
db.collection.find(query, {title: 1, url: 0}) // 錯誤
只能全1或全0,除了在inclusion模式時可以指定_id為0
db.collection.find(query, {_id:0, title: 1, url: 1}) // 正確
MongoDB 與 RDBMS Where 語句比較
如果你熟悉常規的 SQL 資料,通過下表可以更好的理解 MongoDB 的條件語句查詢:
#若是50<likes<110
#寫法為
db.col.find({likes: { $lt: 110 ,$gt: 50}})
MongoDB AND條件語句
db.col.find({key1:value1, key2:value2}).pretty()
MongoDB OR條件語句
db.col.find({$or:[{"by":"菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
MongoDB AND和OR聯合使用
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
MongoDB sort() 方法
#sort() 方法可以通過引數指定排序的欄位,並使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而 -1 是用於降序排列。
db.col.find().sort({_id:1}).limit(1)
❤️注意:skip(), limilt(), sort()三個放在一起執行的時候,執行的順序是先 sort(), 然後是 skip(),最後是顯示的 limit()。
MongoDB Limit與Skip方法
skip方法在執行時,會遍歷所有資料,一條一條過濾。
# 以下例項為顯示查詢文件中的兩條記錄
db.col.find({},{"title":1,_id:0}).limit(2)
#以下例項只會顯示第二條文件資料
db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
#注意:無論limit是在前面還是後面,skip出現時,skip優先執行
❤️此外,limit和skip聯合使用可以用來分頁,但是當資料量大的時候會對效能有一定影響
官網建議:
MongoDB 分頁
# 方法一
# 查詢第一頁
db.col.find().sort({_id:1}).limit("pageSize");
# 查詢之後的頁數
db.col.find().sort({_id:1}).limit("pageSize").skip("pageSize * pageNum");
該方法在資料量大的情況下,效能會有點低,原因由skip方法導致。
# 方法二
# 查詢第一頁
db.col.find().sort({_id:1}).limit("pageSize");
# 查詢之後的頁數
# 獲取每頁最後一條記錄的_id為lastOneId
db.col.find({_id:{$gt: lastOneId}}).sort({_id:1}).limit("pageSize")
3.5 管道操作
//TODO
3.6 聚合操作
//TODO