1. 程式人生 > 其它 >C語言排序演算法整合

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