国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

整理mongodb文檔:find方法查詢數據

這篇具有很好參考價值的文章主要介紹了整理mongodb文檔:find方法查詢數據。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

個人博客

整理mongodb文檔:find方法查詢數據
求關注,求批評,求指出,如果哪兒不清晰,請指出來,謝謝

文章概敘

如題,本文講的是如何用find查詢數據,如何在數組、字段、對象中查詢,以及‘或’等查詢操作,最后講了一些參數。依舊是在shell下操作。

數據準備

查詢數據是db操作中很重要的一步,而mongodb又是Nosql的代表。所以,準備了兩條數據,分別是有string,array,number,object的,方便后面的操作以及講解。

[{
    "string": "str1",
    "num": 1,
    "obj": { 'name1': 'value1' },
    "arr": ["arr11", 'arr12']
},
{
    "string": "str2",
    "num": 2,
    "obj": { 'name2': 'value2' },
    "arr": ["arr21", 'arr22']
}]

find

Selects documents in a collection or view and returns a cursor to the
selected documents.

大概意思就是選擇集合或視圖中的文檔,并將光標返回到所選文檔。

首先來個最簡單的用法,直接使用find方法查詢出所有的數據,讓大家有個直觀的了解

db.test.find()

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

數據查詢成功,但是這樣子我們查詢出來的是整個表的數據,實際開發(fā)中很少這樣子做。畢竟一個表幾個億的數據是很正常的,而我們再看下文檔中關于find方法的描述

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

看出來,有兩個參數,第一個是我們的查詢條件,第二個是我們的返回字段操作

字段查詢

假定一個例子,我們只需要查詢出num為1的數據,那么我們可以這樣子

db.test
  .find({ num: 1 })

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

這樣子,我們就查詢出了我們想要的那條數據,而如果存在多條數據的num都為1,我們可以再增加一些查詢的條件,如下:

db.test.find({
    num: 1,
    string: 'str1'
})

這樣子的意思,就是查詢string為str1,并且num為1的數據。相當于我們的‘并’查詢,既然有‘并’查詢,那么就有‘或’查詢,假設我們要查詢num為1或則2的數據,我們的查詢條件可以這么寫:

db.test.find({
    "$or": [{ num: 1 }, { num: 2 }]
})
db.test.find({
    num: { "$in": [1, 2] }
})

根據字面意思,第一個sql的意思是一個‘或’操作,其中滿足num為1或則2的時候,而第二個sql的意思則是如果num這個字段是在我們的1,2這兩個之間的時候返回,兩者實現的效果是一樣的,但是可以看到or的操作是先把操作符放在外層,然后再將可能的條件列舉出來,而in的操作是具體對某個字段的操作。這兩個的用法需要注意下。

講述完了"$or"的用法,接下里再講解下如果必須加入其他條件以及正則的使用,正則的使用很重要,在我們做sql查詢的時候,我們要匹配數據經常用到。

舉個例子,現在我們還需要string字段為‘1’結尾的,sql應該如下:

db.test.find({
    string:/1$/,
    "$or": [{ num: 1 }, { num: 2 }]
})

有正則經驗的朋友可以理解出,/1$/是正則的寫法,意思就是1結尾,上述的sql是滿足string以1結尾,且存在num為1或則num為2的情況。
整理mongodb文檔:find方法查詢數據,mongodb,數據庫

講解完了’ o r ′ 以 及 ′ or'以及' orin’這兩個比較重要的,還有正則的,剩下的是’ l t ′ 、 ′ lt'、' lt、gt’等用法,這個建議大家自己按照我的例子去敲一下。官網有很明確的文檔講到這幾個的作用,當然,不大明確的,可以在下面跟我留言。我給個鏈接(最主要希望大家自己學習怎么查找文檔)。

對象查詢

字段的查詢是最簡單的,基本只要用鍵值對的形式查詢就可以,但對于新手來說,對象查詢肯定會一臉懵逼,下面就用一個sql講解如何使用對象查詢

db.test.find({
    "obj.name1": "value1"
})

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

可以看到,與上面的字段查詢相比,我們將原來的‘string’變成了’obj.name1’,然后就查出了obj中name為value1的那條數據,看…多簡單。

數組查詢

本質上來說,對象跟數組是沒有區(qū)別的,因為數組也是對象的一種,一種key為數字,但是被我們"忽略"掉的key,所以我們使用也可以使用

db.test.find({
    "arr.0": "arr1"
})

這樣子看起來很奇怪,但是能不能查詢出我們剛剛那條數據呢?很明顯,是可以的
整理mongodb文檔:find方法查詢數據,mongodb,數據庫

但是我們實際開發(fā)中怎么保證數組的第一個數據(key為0的那條)是arr11呢?所以我們一般會用下面的方法去查詢

db.test.find({
    "arr": "arr11"
})

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

沒啥好解說的,非要理解,就是遍歷,查看每一條的arr字段,看看是不是數組類型,是的話就看看有沒有arr11這個值這樣子。

字段篩選

講解完了查詢的條件,就輪到了字段的篩選了,舉一個例子,我們只需要返回string這個字段,那么我們可以用下面的sql

db.test.find(
    { string: "str1" },
    { string: 1 }
)

第一個參數我們之前講過了,也就是查詢的條件,這兒的意思是只要string的值為str1的數據。
第二個參數的意思是返回string參數,其中有兩個值,分別是1和0。1代表的是要返回,0代表的是不要返回。
整理mongodb文檔:find方法查詢數據,mongodb,數據庫

這兒可以看到,雖然沒有設置,但是還是返回了_id,畢竟人家是唯一id,比較牛逼,所以有點特權很正常。那么按照上述所說的,我們不想要返回_id,可以設置下面這樣子

db.test.find(
    { string: "str1" },
    { string: 1, "_id": 0 }
)

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

但是呢,部分朋友應該知道一條規(guī)則,就是0跟1是不能同時出現的,不然會出現很奇怪的情況,比如(我這兒是在很正經的科普mongodb,請不要想歪)

db.test.find(
    { string: "str1" },
    {
        "obj": 1,
        string:0
    }
)

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

意思就是你不能在進來的時候還出去。
除此之外,我們也可以使用下面這種情況

db.test.find({},
    {
        "obj.name1": 1,
    }
)

整理mongodb文檔:find方法查詢數據,mongodb,數據庫

意思就是我只要返回obj對象的name1,這么做原因也很簡單,部分人會將頭像之類圖片轉化為base64,然后將字符串插入到db中,導致返回的數據過多的時候卡死,而這樣做就可以讓我們只拿到想要的數據。

collation

講解完了mongodb的find方法,大家可能發(fā)現,我之前一直講的參數collation在這兒好像沒有了,但是collation的重要性又不言而喻,所以mongodb更不可能放棄它,尤其是在find這種最需要它的api中。所以這兒提一嘴如何使用collaion。

db.test
    .find()
    .collation({ locale: 'simple' })

整理mongodb文檔:collation

cursor

對于游標,我不大想介紹(我后面可能會寫一個關于游標這個設計的博客,本文主要設計的是查詢數據,我不想超過十分鐘)。
大概理解為它是一個指針,就像是linux的軟連接、c的指針,當我們拿到它的時候,它只是一串地址,指向那條我們想要的數據,當我們真正想要操作數據的時候,它會帶我們去到那個文件的地方,是一個很棒的設計。
請記住一點,我們的數據都是在shell中找到的,所以我們返回的都是一個一個游標,具體請看上面所說的

Selects documents in a collection or view and returns a cursor to the
selected documents.

所以我們在代碼中需要加一個toJSON或是toArray來將其轉化,不過,我們更多是使用lean方法。
好消息是lean() 方法可以幫助我們獲得更快的數據獲取速度,因為它能夠將 MongoDB 查詢結果直接轉化為 JavaScript 對象(或 JSON 字符串)而不需要創(chuàng)建 Mongoose 模型實例。

壞消息是lean只能在find方法中使用。

db.test
    .find()
    .lean()

最后的啰嗦

增刪改查,沒有一個是不重要的,相對于聚合,索引,集群這些,對于新手增刪改查是最重要的。希望大家能好好敲一遍代碼或者看下項目里的代碼!文章來源地址http://www.zghlxwxcb.cn/news/detail-643473.html

到了這里,關于整理mongodb文檔:find方法查詢數據的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【MongoDB】數據庫、集合、文檔常用CRUD命令

    【MongoDB】數據庫、集合、文檔常用CRUD命令

    目錄 一、數據庫操作 1、創(chuàng)建數據庫操作 2、查看當前有哪些數據庫 3、查看當前在使用哪個數據庫 4、刪除數據庫 二、集合操作 1、查看有哪些集合 2、刪除集合 3、創(chuàng)建集合 三、文檔基本操作 1、插入數據 2、查詢數據 3、刪除數據 4、修改數據 四、文檔分頁查詢 五、文檔其

    2024年02月13日
    瀏覽(21)
  • 【數據庫】通過實例講清楚,Mongodb的增刪查改,分組查詢,聚合查詢aggregate

    【數據庫】通過實例講清楚,Mongodb的增刪查改,分組查詢,聚合查詢aggregate

    目錄 一.基礎概念 二.數據庫的管理 1.創(chuàng)建數據庫 2.刪除數據庫 二.集合的管理 1.顯示所有集合 2.創(chuàng)建集合 3.刪除當前集合 4.向集合中插入元素 三.文檔的管理 1.文檔插入 2.文檔的更新 3.文檔的刪除 4.文檔查詢 (1)查詢基本語法: (2)查詢table2集合下的所有文檔 (3)查詢t

    2024年02月10日
    瀏覽(13)
  • 數據庫信息速遞  MONGODB 6.0 的新特性,更多的查詢函數,加密查詢,與時序數據集合 (譯)...

    數據庫信息速遞 MONGODB 6.0 的新特性,更多的查詢函數,加密查詢,與時序數據集合 (譯)...

    開頭還是介紹一下群,如果感興趣polardb ,mongodb ,mysql ,postgresql ,redis 等有問題,有需求都可以加群群內有各大數據庫行業(yè)大咖,CTO,可以解決你的問題。加群請聯(lián)系 liuaustin3 ,在新加的朋友會分到3群(共1000人左右 1 + 2 + 3),最近發(fā)展的速度比較快,2群除特殊情況,不在添加

    2024年02月16日
    瀏覽(18)
  • WordPress必備數據庫SQL查詢語句整理

    最近明月給博客和主站都部署了SSL證書,徹徹底底的加入了HTTPS站點行列。這個期間也用到了SQL查詢語句來批量的對內鏈的HTTP前綴做替換,就感覺掌握一些SQL方面的語句還是非常有必要的,這不在【俄語譯客】博客上就發(fā)現了幾條比較實用的,適合 WordPress 實用的SQL語句。于

    2024年02月01日
    瀏覽(40)
  • 分布式數據庫NoSQL(四)——MongoDB 之聚合函數查詢統(tǒng)計

    分布式數據庫NoSQL(四)——MongoDB 之聚合函數查詢統(tǒng)計

    MongoDB 中聚合( aggregate )主要用于處理數據(諸如統(tǒng)計平均值,求和等),并返回計算后的數據結果,通常由聚合管道操作符和聚合表達式組合,完成數據處理。功能有點類似 Sql 語句中的 sum()、agv() 等。 目錄 第1關:聚合管道操作符將文檔定制格式輸出(一) 常用聚合管道操作符

    2024年02月09日
    瀏覽(23)
  • 通過Studio 3T對Mongodb進行 創(chuàng)建數據庫/集合 增刪查改集合文檔操作

    通過Studio 3T對Mongodb進行 創(chuàng)建數據庫/集合 增刪查改集合文檔操作

    首先 你需要安裝Studio 3T 以及啟動 Mongodb服務 具體可以參考我的文章 Studio 3T客戶端連接Mongodb數據庫服務 我們之前 通過 隨便輸切換是可以的 但除了這里能看到的 它們都僅存在于內存 我們右鍵頂部菜單 選擇 添加數據庫/創(chuàng)建數據庫 這里 我們輸入數據庫名稱 然后 點擊OK 這樣

    2024年02月01日
    瀏覽(94)
  • H2數據庫配置及相關使用方式一站式介紹(極為詳細并整理官方文檔)

    H2數據庫配置及相關使用方式一站式介紹(極為詳細并整理官方文檔)

    注意:可以直接移步至【2. H2數據庫實戰(zhàn)】目錄下進行對H2數據庫的快速使用 1.1 H2數據庫介紹 官方文檔地址: http://www.h2database.com/html/main.html H2的開發(fā)始于2004年5月, 但它在2005年12月14日首次發(fā)表。 H2的原作者Thomas Mueller也是Hypersonic SQL的原始開發(fā)者。 2001年,他加入PointBase公司

    2024年02月13日
    瀏覽(21)
  • 深入了解 Python MongoDB 查詢:find 和 find_one 方法完全解析

    在 MongoDB 中,我們使用 find() 和 find_one() 方法來在集合中查找數據,就像在MySQL數據庫中使用 SELECT 語句來在表中查找數據一樣 要從MongoDB的集合中選擇數據,我們可以使用 find_one() 方法。 find_one() 方法返回選擇中的第一個文檔。 示例 查找 customers 集合中的第一個文檔: 要從

    2024年02月02日
    瀏覽(17)
  • MongoDB 數據庫數據導入 - 關于如何使用 csv 導入數據的命令方法、圖形界面可視化導入方法

    MongoDB 數據庫數據導入 - 關于如何使用 csv 導入數據的命令方法、圖形界面可視化導入方法

    興趣使然,突發(fā)奇想,想到了就寫,就當打發(fā)時間了。 csv文件路徑問題,絕對路徑和相對路徑都可以 type 沒有=號,也是可以的,空格自動識別 將 測試表.csv 文件導入到 mongodatabase 庫, mycollection 集合中,導入時必須指定列名稱 (如果 csv 文件第一行是列名稱,也會被當成數據

    2023年04月22日
    瀏覽(64)
  • 【SpringBoot筆記28】SpringBoot集成ES數據庫之操作doc文檔(創(chuàng)建、更新、刪除、查詢)

    這篇文章,主要介紹SpringBoot集成ES數據庫之操作doc文檔(創(chuàng)建、更新、刪除、查詢)。 目錄 一、SpringBoot操作ES文檔數據 1.1、創(chuàng)建文檔 1.2、更新文檔 1.3、刪除文檔

    2024年02月08日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包