在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ MongoDB查詢文檔
MongoDB教程
MongoDB覆蓋查詢
MongoDB數(shù)據(jù)建模
MongoDB聚合
MongoDB更改用戶密碼和自定義數(shù)據(jù)
MongoDB用戶
MongoDB分片
MongoDB創(chuàng)建集合
MongoDB文本搜索
MongoDB數(shù)據(jù)類型
MongoDB GridFS
MongoDB索引限制
MongoDB插入文檔
MongoDB刪除集合
MongoDB數(shù)據(jù)庫引用
MongoDB復(fù)制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點(diǎn)
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動(dòng)遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復(fù)
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫
MongoDB認(rèn)證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級索引
MongoDB數(shù)據(jù)庫的優(yōu)點(diǎn)
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫
MongoDB啟用身份驗(yàn)證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達(dá)式
MongoDB查詢文檔
MongoDB關(guān)聯(lián)關(guān)系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB查詢文檔

在本章中,我們將學(xué)習(xí)如何從MongoDB集合中查詢文檔。

find()方法

要從MongoDB集合查詢數(shù)據(jù),需要使用MongoDB的find()方法。

語法

find()命令的基本語法如下:

>db.COLLECTION_NAME.find(document)

find()方法將以非結(jié)構(gòu)化的方式顯示所有文檔。

pretty()方法

要以格式化的方式顯示結(jié)果,可以使用pretty()方法。

語法

> db.mycol.find().pretty()

示例

>db.mycol.find().pretty()
{
   "_id": 100,
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "yiibai tutorials",
   "url": "http://www.yiibai.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

除了find()方法外,還有一個(gè)findOne()方法,它只返回一個(gè)文檔。

MongoDB 與 RDBMS的等效 Where 子句

要在一些條件的基礎(chǔ)上查詢文檔,可以使用以下操作。

操作 語法 示例 RDBMS等效語句
相等 {<key>:<value>} db.mycol.find({"by":"yiibai"}).pretty() where by = 'yiibai'
小于 {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
小于等于 {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
大于等于 {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50

下面我們將對上表中的所有操作演示 -

MongoDB中的AND操作符

語法

find()方法中,如果通過使用’‘將它們分開傳遞多個(gè)鍵,則 MongoDB 將其視為AND條件。 以下是AND的基本語法 -

>db.mycol.find(
   {
      $and: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

示例

以下示例將顯示由“yiibai tutorials”編寫并且標(biāo)題為“MongoDB Overview”的所有教程。

> db.mycol.find({$and:[{"by":"yiibai tutorials"},{"title": "MongoDB Overview"}]}).pretty()
{
        "_id" : 100,
        "title" : "MongoDB Overview",
        "description" : "MongoDB is no sql database",
        "by" : "yiibai tutorials",
        "url" : "http://www.yiibai.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}
>

對于上面給出的例子,等效的SQL where子句是 -

SELECT * FROM mycol where by ='yiibai tutorials' AND title ='MongoDB Overview'

可以在find子句中傳遞任意數(shù)量的鍵值。

MongoDB中的OR操作符

語法

在要根據(jù)OR條件查詢文檔,需要使用$or關(guān)鍵字。 以下是OR條件的基本語法 -

>db.mycol.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

示例

以下示例將顯示由“yiibai tutorials”編寫或標(biāo)題為“MongoDB Overview”的所有教程。

>db.mycol.find({$or:[{"by":"yiibai tutorials"},{"title": "MongoDB Overview"}]}).pretty()
{
   "_id": 100,
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "yiibai tutorials",
   "url": "http://www.yiibai.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

使用 AND 和 OR 條件一起

示例

以下示例將顯示likes大于10以及標(biāo)題是“MongoDB Overview”或者“yiibai tutorials”的所有文檔。 等價(jià)SQL where子句為 -

SELECT * FROM mycol where likes> 10 AND(by ='yiibai tutorials' OR title ='MongoDB Overview')
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "yiibai tutorials"},
   {"title": "MongoDB Overview"}]}).pretty()
{
   "_id": 100,
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "yiibai tutorials",
   "url": "http://www.yiibai.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

查詢嵌入/嵌套文檔

這里演示如何使用:db.collection.find()方法對嵌入/嵌套文檔的查詢操作的示例。 此頁面上的示例使用inventory集合。要填充庫存(inventory)集合以準(zhǔn)備一些數(shù)據(jù),請運(yùn)行以下命令:

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

匹配嵌入/嵌套文檔

要在作為嵌入/嵌套文檔的字段上指定相等條件,請使用查詢過濾器文檔{<field>:<value>},其中<value>是要匹配的文檔。

例如,以下查詢選擇字段size等于{ h: 14, w: 21, uom: "cm" }的所有文檔:

db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )

整個(gè)嵌入式文檔中的相等匹配需要精確匹配指定的<value>文檔,包括字段順序。
例如,以下查詢與庫存(inventory)集合中的任何文檔不匹配:

db.inventory.find(  { size: { w: 21, h: 14, uom: "cm" } }  )

查詢嵌套字段

要在嵌入/嵌套文檔中的字段上指定查詢條件,請使用點(diǎn)符號(“field.nestedField”)。

在嵌套字段上指定等于匹配

以下示例選擇在size字段中嵌套的字段uom等于“in”的所有文檔:

db.inventory.find( { "size.uom": "in" } )

使用查詢運(yùn)算符指定匹配

查詢過濾器文檔可以使用查詢運(yùn)算符來指定,如以下形式的條件:

{ <field1>: { <operator1>: <value1> }, ... }

以下查詢使用size字段中嵌入的字段h中的小于運(yùn)算符($lt):

db.inventory.find( { "size.h": { $lt: 15 } } )

指定AND條件

以下查詢選擇嵌套字段h小于15的所有文檔,嵌套字段uom等于“in”,status字段等于“D”:

db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )