最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB中查詢(find操作符)詳細(xì)指南

 更新時(shí)間:2023年04月21日 11:59:27   作者:愛(ài)游泳的老白  
MongoDB是領(lǐng)先的NoSQL數(shù)據(jù)庫(kù)之一,以其快速的性能,靈活的模式,可伸縮性和強(qiáng)大的索引功能而聞名,下面這篇文章主要給大家介紹了關(guān)于MongoDB中查詢(find操作符)的相關(guān)資料,需要的朋友可以參考下

1. 概述

在本教程中,我們將著眼于執(zhí)行搜索操作以在MongoDB中檢索文檔。MongoDB 提供了一個(gè)find操作符來(lái)從集合中查詢文檔。find運(yùn)算符的主要目的是根據(jù)查詢條件從集合中選擇文檔,并將光標(biāo)返回到所選文檔。

在本教程中,我們將首先查看 MongoDB Shell 查詢中的find運(yùn)算符,然后使用 Java 驅(qū)動(dòng)程序代碼。

2. 數(shù)據(jù)庫(kù)初始化

在我們繼續(xù)執(zhí)行查找操作之前,我們首先需要設(shè)置一個(gè)數(shù)據(jù)庫(kù)baeldung和一個(gè)樣本收集員工:

db.employee.insertMany([
{
    "employeeId":"EMP1",
    "name":"Sam", 
    "age":23,
    "type":"Full Time",
    "department":"Engineering"
},
{ 
    "employeeId":"EMP2",
    "name":"Tony",
    "age":31,
    "type":"Full Time",
    "department":"Admin"
},
{
    "employeeId":"EMP3",
    "name":"Lisa",
    "age":42,
    "type":"Part Time",
    "department":"Engineering"
}]);

成功插入后,上述查詢將返回類似于下圖所示的 JSON 結(jié)果:

{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("62a88223ff0a77909323a7fa"),
        ObjectId("62a88223ff0a77909323a7fb"),
        ObjectId("62a88223ff0a77909323a7fc")
    ]
}

此時(shí),我們已將一些文檔插入到我們的集合中以執(zhí)行各種類型的查找操作。

3. 使用 MongoDB Shell

要從 MongoDB 集合中查詢文檔,我們使用 db.collection.find(query, projection) 方法。該方法接受兩個(gè)可選參數(shù)— 查詢(query) 和 投影(projection) —作為 MongoDB BSON文檔。

查詢參數(shù)接受帶有查詢運(yùn)算符的選擇過(guò)濾器。要從 MongoDB 集合中檢索所有文檔,我們可以省略此參數(shù)或傳遞一個(gè)空白文檔。

接下來(lái),投影參數(shù)用于指定要從匹配文檔返回的字段。要返回匹配文檔中的所有字段,我們可以省略此參數(shù)。

此外,讓我們從返回所有集合文檔的基本查找查詢開始:

db.employee.find({<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->});

上面的查詢將返回員工集合中的所有文檔:

{ "_id" : ObjectId("62a88223ff0a77909323a7fa"), "employeeId" : "1", "name" : "Sam", "age" : 23, "type" : "Full Time", "department" : "Engineering" }
{ "_id" : ObjectId("62a88223ff0a77909323a7fb"), "employeeId" : "2", "name" : "Tony", "age" : 31, "type" : "Full Time", "department" : "Admin" }
{ "_id" : ObjectId("62a88223ff0a77909323a7fc"), "employeeId" : "3", "name" : "Ray", "age" : 42, "type" : "Part Time", "department" : "Engineering" }

*接下來(lái),讓我們編寫一個(gè)查詢來(lái)返回屬于“Engineering” *部門的所有員工:

db.employee.find(
{
    "department":"Engineering"
});

上述查詢返回部門等于 “Engineering”的所有員工收款單據(jù):

{ "_id" : ObjectId("62a88223ff0a77909323a7fa"), "employeeId" : "1", "name" : "Sam", "age" : 23, "type" : "Full Time", "department" : "Engineering" }
{ "_id" : ObjectId("62a88223ff0a77909323a7fc"), "employeeId" : "3", "name" : "Ray", "age" : 42, "type" : "Part Time", "department" : "Engineering" }

最后,讓我們編寫一個(gè)查詢來(lái)獲取屬于“Engineering”部門的所有員工的 姓名 和 年齡:

db.employee.find(
{
    "department":"Engineering"
},
{
    "name":1,
    "age":1
});

上述查詢只返回符合查詢條件的文檔的名稱和年齡字段:

{ "_id" : ObjectId("62a88223ff0a77909323a7fa"), "name" : "Sam", "age" : 23 }
{ "_id" : ObjectId("62a88223ff0a77909323a7fc"), "name" : "Ray", "age" : 42 }

請(qǐng)注意,除非明確排除,否則所有文檔中默認(rèn)返回_id字段。

此外,重要的是要注意 find 運(yùn)算符將光標(biāo)返回到與查詢過(guò)濾器匹配的文檔。MongoDB Shell 自動(dòng)迭代光標(biāo)以顯示多達(dá) 20 個(gè)文檔。

此外,MongoDB Shell 提供了一個(gè)*findOne()*方法,該方法只返回一個(gè)滿足上述查詢條件的文檔。如果多個(gè)文檔匹配,則將按照磁盤上文檔的自然順序返回第一個(gè)文檔:

db.employee.findOne();

與*find()*不同,上面的查詢將只返回一個(gè)文檔而不是游標(biāo):

{
    "_id" : ObjectId("62a99e22a849e1472c440bbf"),
    "employeeId" : "EMP1",
    "name" : "Sam",
    "age" : 23,
    "type" : "Full Time",
    "department" : "Engineering"
}

4. 使用 Java 驅(qū)動(dòng)程序

到目前為止,我們已經(jīng)了解了如何使用 MongoDB Shell 來(lái)執(zhí)行查找操作。接下來(lái),讓我們使用 MongoDB Java 驅(qū)動(dòng)程序?qū)崿F(xiàn)相同的功能。在開始之前,讓我們先創(chuàng)建一個(gè)到員工集合的MongoClient連接:

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("baeldung");
MongoCollection<Document> collection = database.getCollection("employee");

在這里,我們創(chuàng)建了到運(yùn)行在默認(rèn)端口 27017 上的 MongoDB 服務(wù)器的連接。接下來(lái),我們從連接創(chuàng)建的*MongoDatabase實(shí)例中獲取MongoCollection的實(shí)例。

首先,要執(zhí)行*查找操作,我們?cè)贛ongoCollection的實(shí)例上調(diào)用 find() 方法。讓我們檢查代碼以從集合中檢索所有文檔:

FindIterable<Document> documents = collection.find();
MongoCursor<Document> cursor = documents.iterator();
while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

請(qǐng)注意,find()方法返回FindIterable<Document>的一個(gè)實(shí)例。然后我們通過(guò)調(diào)用 FindIterable 的iterator()方法獲得MongoCursor的一個(gè)實(shí)例。最后,我們遍歷光標(biāo)以檢索每個(gè)文檔。

接下來(lái),讓我們添加查詢運(yùn)算符來(lái)過(guò)濾從查找操作返回的文檔:

Bson filter = Filters.eq("department", "Engineering");
FindIterable<Document> documents = collection.find(filter);

MongoCursor<Document> cursor = documents.iterator();
while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

在這里,我們將Bson過(guò)濾器作為參數(shù)傳遞給find()方法。我們可以使用查詢運(yùn)算符的任意組合作為find()方法的過(guò)濾器。上面的代碼片段將返回department 等于“Engineering”的所有文檔。

此外,讓我們編寫一個(gè)片段,它只返回匹配選擇條件的文檔中的姓名和年齡字段:

Bson filter = Filters.eq("department", "Engineering");
Bson projection = Projections.fields(Projections.include("name", "age"));
FindIterable<Document> documents = collection.find(filter)
  .projection(projection);

MongoCursor<Document> cursor = documents.iterator();
while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

在這里,我們調(diào)用FindIterable實(shí)例的projection()方法。我們將Bson過(guò)濾器作為參數(shù)傳遞給*projection()*方法。我們可以使用投影操作在最終結(jié)果中包含或排除任何字段。

最后,我們可以使用FindIterable實(shí)例上的first()方法檢索結(jié)果的第一個(gè)文檔。這將返回單個(gè)文檔而不是MongoCursor實(shí)例:

FindIterable<Document> documents = collection.find();
Document document = documents.first();

5. 結(jié)論

在本文中,我們學(xué)習(xí)了使用各種方法在 MongoDB 中執(zhí)行查找操作。我們執(zhí)行find以使用查詢運(yùn)算符檢索與選擇標(biāo)準(zhǔn)匹配的特定文檔。此外,我們還學(xué)習(xí)了執(zhí)行投影以確定匹配文檔中返回的字段。

首先,我們研究了 MongoDB Shell 查詢中find*操作的用例,然后討論了相應(yīng)的 Java 驅(qū)動(dòng)程序代碼。

到此這篇關(guān)于MongoDB中查詢(find操作符)的文章就介紹到這了,更多相關(guān)MongoDB查詢find操作符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB索引機(jī)制詳解

    MongoDB索引機(jī)制詳解

    與MySQL 一樣,"索引" 在 MongoDB 中也是用于優(yōu)化查詢的一種數(shù)據(jù)結(jié)構(gòu),通過(guò)創(chuàng)建適當(dāng)?shù)乃饕?,MongoDB 能夠快速地定位符合查詢條件的文檔,從而減少了掃描文檔的數(shù)量,提高了查詢性能。本文詳細(xì)介紹了MongoDB 的索引機(jī)制,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • 阿里云CentOS7安裝Mongodb教程

    阿里云CentOS7安裝Mongodb教程

    本文給大家介紹的教程主要參考資源的官方文檔,當(dāng)然如果你是centos6的,也可以看看其他文章,筆者用的是7,mongodb想用3以上的版本,需要的小伙伴可以參考下
    2016-11-11
  • MongoDB安裝到windows服務(wù)的方法及遇到問(wèn)題的完美解決方案

    MongoDB安裝到windows服務(wù)的方法及遇到問(wèn)題的完美解決方案

    這篇文章主要介紹了MongoDB安裝到windows服務(wù)的方法及遇到問(wèn)題的完美解決方案,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • MongoDB 用戶管理

    MongoDB 用戶管理

    這篇文章主要介紹了MongoDB 如何對(duì)用戶管理,幫助大家更好的理解和使用MongoDB數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • mongodb分片技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    mongodb分片技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了mongodb分片技術(shù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 關(guān)于mongodb版本升級(jí)問(wèn)題

    關(guān)于mongodb版本升級(jí)問(wèn)題

    這篇文章主要介紹了關(guān)于mongodb版本升級(jí)問(wèn)題,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • CentOS7.2 安裝 MongoDB 3.4的教程

    CentOS7.2 安裝 MongoDB 3.4的教程

    這篇文章主要介紹了CentOS7.2 安裝 MongoDB 3.4的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • PHP中MongoDB數(shù)據(jù)庫(kù)的連接、添加、修改、查詢、刪除等操作實(shí)例

    PHP中MongoDB數(shù)據(jù)庫(kù)的連接、添加、修改、查詢、刪除等操作實(shí)例

    這篇文章主要介紹了PHP中MongoDB數(shù)據(jù)庫(kù)的連接、添加、修改、查詢、刪除等操作實(shí)例,需要的朋友可以參考下
    2014-06-06
  • vs2019 下用 vb.net編寫窗體程序連接 mongodb4.2的方法

    vs2019 下用 vb.net編寫窗體程序連接 mongodb4.2的方法

    這篇文章主要介紹了vs2019 下用 vb.net編寫窗體程序連接 mongodb4.2,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 詳解linux 使用docker安裝mongodb方法

    詳解linux 使用docker安裝mongodb方法

    這篇文章主要介紹了linux 使用docker安裝mongodb方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

葫芦岛市| 昌江| 永昌县| 新昌县| 昌图县| 贵定县| 霞浦县| 潼关县| 沂南县| 汪清县| 衡东县| 庄浪县| 韶山市| 布尔津县| 安平县| 天门市| 和田市| 黎城县| 苍山县| 驻马店市| 泗洪县| 蓬莱市| 通山县| 潮州市| 新营市| 余姚市| 呼玛县| 宜丰县| 烟台市| 华安县| 祁门县| 开化县| 巢湖市| 曲沃县| 视频| 平定县| 辛集市| 酒泉市| 松潘县| 常宁市| 集贤县|