九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
MongoDB(四):數(shù)據(jù)類型、插入文檔、查詢文檔

1. 數(shù)據(jù)類型

MongoDB支持許多數(shù)據(jù)類型。

字符串 - 這是用于存儲(chǔ)數(shù)據(jù)的最常用的數(shù)據(jù)類型。MongoDB中的字符串必須為UTF-8。

整型 - 此類型用于存儲(chǔ)數(shù)值。 整數(shù)可以是32位或64位,具體取決于服務(wù)器。

布爾類型 - 此類型用于存儲(chǔ)布爾值(true / false)值。

雙精度浮點(diǎn)數(shù) - 此類型用于存儲(chǔ)浮點(diǎn)值。

最小/最大鍵 - 此類型用于將值與最小和最大BSON元素進(jìn)行比較。

數(shù)組 - 此類型用于將數(shù)組或列表或多個(gè)值存儲(chǔ)到一個(gè)鍵中。

時(shí)間戳 - ctimestamp,當(dāng)文檔被修改或添加時(shí),可以方便地進(jìn)行錄制。

對(duì)象 - 此數(shù)據(jù)類型用于嵌入式文檔。

對(duì)象 - 此數(shù)據(jù)類型用于嵌入式文檔。

Null - 此類型用于存儲(chǔ)Null值。

符號(hào) - 該數(shù)據(jù)類型與字符串相同; 但是,通常保留用于使用特定符號(hào)類型的語(yǔ)言。

日期 - 此數(shù)據(jù)類型用于以UNIX時(shí)間格式存儲(chǔ)當(dāng)前日期或時(shí)間。您可以通過(guò)創(chuàng)建日期對(duì)象并將日,月,年的日期進(jìn)行指定自己需要的日期時(shí)間。

對(duì)象ID - 此數(shù)據(jù)類型用于存儲(chǔ)文檔的ID。

二進(jìn)制數(shù)據(jù) - 此數(shù)據(jù)類型用于存儲(chǔ)二進(jìn)制數(shù)據(jù)。

代碼 - 此數(shù)據(jù)類型用于將JavaScript代碼存儲(chǔ)到文檔中。

正則表達(dá)式 - 此數(shù)據(jù)類型用于存儲(chǔ)正則表達(dá)式。

2. 插入文檔

2.1 insert()和save方法插入文檔

引導(dǎo)數(shù)據(jù)插入到MongoDB集合中,需要使用MongoDB的insert()或save()方法。

語(yǔ)法:

>db.COLLECTION_NAME.insert(document)

例子:

>db.mycol.insert({   _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,})

這里 mycol的英文集合的名稱,是在前一章創(chuàng)建的。如果數(shù)據(jù)庫(kù)中不存在集合,則MongoDB將創(chuàng)建此集合,然后將文檔插入到該集合中。

在插入的文檔中,如果不指定_id參數(shù),那么MongoDB會(huì)成為文檔分配一個(gè)唯一的ObjectID。
ObjectID 長(zhǎng)度為 12 字節(jié),由幾個(gè) 2-4 字節(jié)的鏈組成。每個(gè)鏈代表并指定文檔身份的具體內(nèi)容。以下的值構(gòu)成了完整的 12 字節(jié)組合:
  1. 一個(gè) 4 字節(jié)的值,表示自 Unix 紀(jì)元以來(lái)的秒數(shù)
  2. 一個(gè) 3 字節(jié)的機(jī)器標(biāo)識(shí)符
  3. 一個(gè) 2 字節(jié)的進(jìn)程 ID
  4. 一個(gè) 3 字節(jié)的計(jì)數(shù)器,以隨機(jī)值開(kāi)始
_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id,    3 bytes incrementer)

要在單個(gè)查詢中插入多個(gè)文檔,可以在insert()命令中傳遞文檔數(shù)組。如下所示:

> db.mycol.insert([   {      _id: 101,      title: 'MongoDB Guide',       description: 'MongoDB is no sql database',      by: 'xhh tutorials',      url: 'http://www.baidu.com',      tags: ['mongodb', 'database', 'NoSQL'],      likes: 100   },   {      _id: 102,      title: 'NoSQL Database',       description: "NoSQL database doesn't have tables",      by: 'xhh tutorials',      url: 'http://www.baidu.com',      tags: ['mongodb', 'database', 'NoSQL'],      likes: 210,       comments: [         {            user:'user1',            message: 'My first comment',            dateCreated: new Date(2017,11,10,2,35),            like: 0          }      ]   },   {      _id: 104,      title: 'Python Quick Guide',       description: "Python Quick start ",      by: 'xhh tutorials',      url: 'http://www.baidu.com',      tags: ['Python', 'database', 'NoSQL'],      likes: 30,       comments: [         {            user:'user1',            message: 'My first comment',            dateCreated: new Date(2018,11,10,2,35),            like: 590          }      ]   }])
要插入文檔,也可以使用db.post.save(document)。如果不在文檔中指定_id,那么save()方法將與insert()方法一樣自動(dòng)分配ID的值。如果指定_id,則將以save()方法的形式替換包含其_id文檔的全部數(shù)據(jù)。

2.2 其他插入文檔的方法

2.2.1 db.collection.insertOne()方法

如果將文檔_id分配給MongoDB,會(huì)自動(dòng)將_id與其ObjectId值添加到新文檔。

db.inventory.insertOne(   { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } })

方法返回包含新插入的文檔的_id細(xì)分值的文檔。

> db.inventory.insertOne(...    { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }... ){        "acknowledged" : true,        "insertedId" : ObjectId("5955220846be576f199feb55")}>

2.2.2 db.collection.insertMany()方法

方法將多個(gè)文檔插入到集合中.
以下示例將三個(gè)新文檔插入到庫(kù)存集合中。如果文檔沒(méi)有指定的_id名稱,MongoDB會(huì)向每個(gè)文檔添加一個(gè)_id對(duì)象ID 值的劃分。
db.inventory.insertMany([   { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },   { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },   { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }])

方法返回包含新插入的文檔的_id細(xì)分值的文檔。

> db.inventory.insertMany([...    { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },...    { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },...    { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }... ]){        "acknowledged" : true,        "insertedIds" : [                ObjectId("59552c1c46be576f199feb56"),                ObjectId("59552c1c46be576f199feb57"),                ObjectId("59552c1c46be576f199feb58")        ]}>

3. 查詢文檔

3.1 find()方法

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

語(yǔ)法:

>db.COLLECTION_NAME.find(document)

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

3.2 pretty()方法

要以格式化的方式顯示結(jié)果,可以使用pretty()方式。
語(yǔ)法:
> 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è)文檔。

3.3 MongoDB與RDBMS的等效Where子句

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

操作語(yǔ)法示例RDBMS等效語(yǔ)句
相等{<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

 

3.4 MongoDB中的AND操作符

語(yǔ)法:

在find()方法中,如果通過(guò)‘,’將它們分開(kāi)傳遞多個(gè)鍵,則MongoDB將其視為AND條件。

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

例子:

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

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

對(duì)于上面給出的例子,等效的SQL where子句是:

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

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

35 MongoDB中的OR操作符

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

例子:

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

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

3.6 AND和OR聯(lián)合使用

例子:
以下示例將顯示likes大于10以及標(biāo)題是“MongoDB”或者“xhh 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"}>

3.7 查詢嵌入/嵌套文檔

數(shù)據(jù)準(zhǔ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" }]);

3.4.1 匹配嵌入/嵌套文檔

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

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

整個(gè)嵌入式文檔中的相等匹配需要精確匹配指定的<value>文檔,包括字段順序。

例如,以下查詢與庫(kù)存(inventory)集合中的任何文檔不匹配:

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

3.4.2 查詢嵌套字段

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

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

以下示例選擇在size字段中嵌套的字段uom等于“in”的所有文檔:
db.inventory.find( { "size.uom": "in" } )

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

查詢過(guò)濾器文檔可以使用查詢運(yùn)算符來(lái)指定,如以下形式的條件:
{ <field1>: { <operator1>: <value1> }, ... }

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

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

3.4.4 指定AND條件

以下查詢選擇嵌套字段h小于15的所有文檔,嵌套字段uom等于“in”,status字段等于“D”:
db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MongoDB 聚合 | 菜鳥(niǎo)教程
MongoDB(五):更新文檔、刪除文檔
《MongoDB高手課》學(xué)習(xí)記錄(第十天)
mongodb指南(十) - developer zone - 集合
《MongoDB高手課》學(xué)習(xí)記錄(第二天)
【Java操作】[翻譯官方文檔]Java Tutorial(Java操作MongoDB入門)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服