新钛云服已累计为您分享703篇技术干货
专题介绍:
八篇文章,近五万字。自建 MongoDB 实践系列文章,为您阐述日常工作中常用的 NoSQL 产品——MongoDB 运维相关的日常实战。主要涉及到:
· MongoDB 的安装及基本使用 (点击进入)
· MongoDB 文档查询 (本期内容)
· MongoDB 复制集的介绍及搭建 (后续更新)
· MongoDB 分片集群的介绍及搭建 (后续更新)
· MongoDB 的备份及恢复 (后续更新)
· MongoDB 安全加密 (后续更新)
· MongoDB Change Stream 功能介绍及代码演示 (后续更新)
· MongoDB 其他(后续更新)
今日分享:《MongoDB 文档查询》。
文档操作
MongoDB 中的文档操作与关系型数据中的增删改查,没什么两样,只是形式不同而已。
// 命令格式为
db.<collection name>.insert({"name":"McLeod"})
// 插入文档
> db.dogs.insert({"name": "toby"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
> db
test
// 查看文档
db.<collection name>.find()
> db.dogs.find()
{ "_id" : ObjectId("5f3e2976f6abe840587e9679"), "name" : "toby" }
> db.cats.insert({"firstName": "coco"})
WriteResult({ "nInserted" : 1 })
> db.cats.find().pretty()
{ "_id" : ObjectId("5f3e2a06f6abe840587e967a"), "firstName" : "coco" }
// 查看集合
> show collections
cats
dogs
// 删除 db
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
集合操作
// 非明确创建
db.<collection name>.insert({"name":"McLeod"})
// 明确创建
db.createCollection(<name>, {<optional options>})
我们在创建集合时,还可以指定一些可选的选项。如下表所示:
一个例子:
> use tyun
switched to db tyun
> db
tyun
> db.createCollection("customers")
{ "ok" : 1 }
db.createCollection("crs", {capped: true, size: 65536, max: 1000000})
> db.createCollection("crs", {capped: true, size: 65536, max: 1000000})
{ "ok" : 1 }
> show collections
crs
customers
# drop 文档
db.<collection name>.drop()
> db.crs.drop()
true
> show collections
customers
// 插入单个文档
db.<collection name>.insert({document})
// 插入多个文档
db.<collection name>.insert(< [{document}, {document}, ..., {document}] >)
一个插入多个文档的例子:
> use playroom
switched to db playroom
> db
playroom
> show dbs
admin 0.000GB
config 0.000GB
tyun 0.000GB
local 0.000GB
db.crayons.insert([
{
"hex": "#EFDECD",
"name": "Almond",
"rgb": "(239, 222, 205)"
},
{
"hex": "#CD9575",
"name": "Antique Brass",
"rgb": "(205, 149, 117)"
},
{
"hex": "#FDD9B5",
"name": "Apricot",
"rgb": "(253, 217, 181)"
},
{
"hex": "#78DBE2",
"name": "Aquamarine",
"rgb": "(120, 219, 226)"
},
{
"hex": "#87A96B",
"name": "Asparagus",
"rgb": "(135, 169, 107)"
},
{
"hex": "#FFA474",
"name": "Atomic Tangerine",
"rgb": "(255, 164, 116)"
},
{
"hex": "#FAE7B5",
"name": "Banana Mania",
"rgb": "(250, 231, 181)"
}
])
// 会有如下输出
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 7,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
接着查看集合:
> show collections
crayons
> db.crayons.find()
{ "_id" : ObjectId("5f3e2cc8f6abe840587e967b"), "hex" : "#EFDECD", "name" : "Almond", "rgb" : "(239, 222, 205)" }
{ "_id" : ObjectId("5f3e2cc8f6abe840587e967c"), "hex" : "#CD9575", "name" : "Antique Brass", "rgb" : "(205, 149, 117)" }
{ "_id" : ObjectId("5f3e2cc8f6abe840587e967d"), "hex" : "#FDD9B5", "name" : "Apricot", "rgb" : "(253, 217, 181)" }
{ "_id" : ObjectId("5f3e2cc8f6abe840587e967e"), "hex" : "#78DBE2", "name" : "Aquamarine", "rgb" : "(120, 219, 226)" }
{ "_id" : ObjectId("5f3e2cc8f6abe840587e967f"), "hex" : "#87A96B", "name" : "Asparagus", "rgb" : "(135, 169, 107)" }
{ "_id" : ObjectId("5f3e2cc8f6abe840587e9680"), "hex" : "#FFA474", "name" : "Atomic Tangerine", "rgb" : "(255, 164, 116)" }
{ "_id" : ObjectId("5f3e2cc8f6abe840587e9681"), "hex" : "#FAE7B5", "name" : "Banana Mania", "rgb" : "(250, 231, 181)" }
// drop
db.crayons.drop()
> db
playroom
> db.dropDatabase()
{ "dropped" : "playroom", "ok" : 1 }
文档查询
前面的内容是关于如何创建集合及创建文档,接下来的篇幅将要介绍文档的查询。准备测试数据:
> use test
switched to db test
db.oscars.insert([
{ "year": "1927",
"title": "Wings",
"imdbId": "tt0018578",
"releaseDate": "1927-05-19T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1927,
"releaseMonth": 4,
"releaseDay": 19
},
{ "year": "1929",
"title": "The Broadway Melody",
"imdbId": "tt0019729",
"releaseDate": "1929-02-01T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1929,
"releaseMonth": 1,
"releaseDay": 1
},
{ "year": "1930",
"title": "All Quiet on the Western Front",
"imdbId": "tt0020629",
"releaseDate": "1930-04-21T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1930,
"releaseMonth": 3,
"releaseDay": 21
},
{ "year": "1931",
"title": "Cimarron",
"imdbId": "tt0021746",
"releaseDate": "1931-01-26T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1931,
"releaseMonth": 0,
"releaseDay": 26
},
{ "year": "1932",
"title": "Grand Hotel",
"imdbId": "tt0022958",
"releaseDate": "1932-04-12T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1932,
"releaseMonth": 3,
"releaseDay": 12
},
{ "year": "1933",
"title": "Cavalcade",
"imdbId": "tt0023876",
"releaseDate": "1933-01-05T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1933,
"releaseMonth": 0,
"releaseDay": 5
},
{ "year": "1934",
"title": "It Happened One Night",
"imdbId": "tt0025316",
"releaseDate": "1934-02-22T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1934,
"releaseMonth": 1,
"releaseDay": 22
},
{ "year": "1935",
"title": "Mutiny on the Bounty",
"imdbId": "tt0026752",
"releaseDate": "1935-11-08T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1935,
"releaseMonth": 10,
"releaseDay": 8
},
{ "year": "1936",
"title": "The Great Ziegfeld",
"imdbId": "tt0027698",
"releaseDate": "1936-03-22T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1936,
"releaseMonth": 2,
"releaseDay": 22
},
{ "year": "1937",
"title": "The Life of Emile Zola",
"imdbId": "tt0029146",
"releaseDate": "1937-08-11T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1937,
"releaseMonth": 7,
"releaseDay": 11
},
{ "year": "1938",
"title": "You Can't Take It with You",
"imdbId": "tt0030993",
"releaseDate": "1938-08-23T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1938,
"releaseMonth": 7,
"releaseDay": 23
},
{ "year": "1939",
"title": "Gone with the Wind",
"imdbId": "tt0031381",
"releaseDate": "1939-12-28T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1939,
"releaseMonth": 11,
"releaseDay": 28
},
{ "year": "1940",
"title": "Rebecca",
"imdbId": "tt0032976",
"releaseDate": "1940-03-27T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1940,
"releaseMonth": 2,
"releaseDay": 27
},
{ "year": "1941",
"title": "How Green Was My Valley",
"imdbId": "tt0033729",
"releaseDate": "1941-10-28T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1941,
"releaseMonth": 9,
"releaseDay": 28
},
{ "year": "1942",
"title": "Mrs. Miniver",
"imdbId": "tt0035093",
"releaseDate": "1942-07-22T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1942,
"releaseMonth": 6,
"releaseDay": 22
},
{ "year": "1943",
"title": "Casablanca",
"imdbId": "tt0034583",
"releaseDate": "1942-11-26T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1942,
"releaseMonth": 10,
"releaseDay": 26
},
{ "year": "1944",
"title": "Going My Way",
"imdbId": "tt0036872",
"releaseDate": "1944-08-16T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1944,
"releaseMonth": 7,
"releaseDay": 16
},
{ "year": "1945",
"title": "The Lost Weekend",
"imdbId": "tt0037884",
"releaseDate": "1945-11-29T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1945,
"releaseMonth": 10,
"releaseDay": 29
},
{ "year": "1946",
"title": "The Best Years of Our Lives",
"imdbId": "tt0036868",
"releaseDate": "1946-12-25T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1946,
"releaseMonth": 11,
"releaseDay": 25
},
{ "year": "1947",
"title": "Gentleman's Agreement",
"imdbId": "tt0039416",
"releaseDate": "1947-11-11T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1947,
"releaseMonth": 10,
"releaseDay": 11
},
{ "year": "1948",
"title": "Hamlet",
"imdbId": "tt0040416",
"releaseDate": "1948-10-27T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1948,
"releaseMonth": 9,
"releaseDay": 27
},
{ "year": "1949",
"title": "All the Kings Men",
"imdbId": "tt0041113",
"releaseDate": "1949-11-08T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1949,
"releaseMonth": 10,
"releaseDay": 8
},
{ "year": "1950",
"title": "All About Eve",
"imdbId": "tt0042192",
"releaseDate": "1950-10-13T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1950,
"releaseMonth": 9,
"releaseDay": 13
},
{ "year": "1951",
"title": "An American in Paris",
"imdbId": "tt0043278",
"releaseDate": "1951-10-04T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1951,
"releaseMonth": 9,
"releaseDay": 4
},
{ "year": "1952",
"title": "The Greatest Show on Earth",
"imdbId": "tt0044672",
"releaseDate": "1952-01-10T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1952,
"releaseMonth": 0,
"releaseDay": 10
},
{ "year": "1953",
"title": "From Here to Eternity",
"imdbId": "tt0045793",
"releaseDate": "1953-09-30T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1953,
"releaseMonth": 8,
"releaseDay": 30
},
{ "year": "1954",
"title": "On the Waterfront",
"imdbId": "tt0047296",
"releaseDate": "1954-07-28T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1954,
"releaseMonth": 6,
"releaseDay": 28
},
{ "year": "1955",
"title": "Marty",
"imdbId": "tt0048356",
"releaseDate": "1955-07-15T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1955,
"releaseMonth": 6,
"releaseDay": 15
},
{ "year": "1956",
"title": "Around the World in 80 Days",
"imdbId": "tt0048960",
"releaseDate": "1956-12-22T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1956,
"releaseMonth": 11,
"releaseDay": 22
},
{ "year": "1957",
"title": "The Bridge on the River Kwai",
"imdbId": "tt0050212",
"releaseDate": "1957-12-19T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1957,
"releaseMonth": 11,
"releaseDay": 19
},
{ "year": "1958",
"title": "Gigi",
"imdbId": "tt0051658",
"releaseDate": "1958-07-10T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1958,
"releaseMonth": 6,
"releaseDay": 10
},
{ "year": "1959",
"title": "Ben-Hur",
"imdbId": "tt0052618",
"releaseDate": "1959-11-18T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1959,
"releaseMonth": 10,
"releaseDay": 18
},
{ "year": "1960",
"title": "The Apartment",
"imdbId": "tt0053604",
"releaseDate": "1960-06-21T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1960,
"releaseMonth": 5,
"releaseDay": 21
},
{ "year": "1961",
"title": "West Side Story",
"imdbId": "tt0055614",
"releaseDate": "1961-12-13T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1961,
"releaseMonth": 11,
"releaseDay": 13
},
{ "year": "1962",
"title": "Lawrence of Arabia",
"imdbId": "tt0056172",
"releaseDate": "1962-12-21T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1962,
"releaseMonth": 11,
"releaseDay": 21
},
{ "year": "1963",
"title": "Tom Jones",
"imdbId": "tt0057590",
"releaseDate": "1963-10-24T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1963,
"releaseMonth": 9,
"releaseDay": 24
},
{ "year": "1964",
"title": "My Fair Lady",
"imdbId": "tt0058385",
"releaseDate": "1964-10-28T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1964,
"releaseMonth": 9,
"releaseDay": 28
},
{ "year": "1965",
"title": "The Sound of Music",
"imdbId": "tt0059742",
"releaseDate": "1965-03-10T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1965,
"releaseMonth": 2,
"releaseDay": 10
},
{ "year": "1966",
"title": "A Man for All Seasons",
"imdbId": "tt0060665",
"releaseDate": "1966-12-14T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1966,
"releaseMonth": 11,
"releaseDay": 14
},
{ "year": "1967",
"title": "In the Heat of the Night",
"imdbId": "tt0061811",
"releaseDate": "1967-08-23T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1967,
"releaseMonth": 7,
"releaseDay": 23
},
{ "year": "1968",
"title": "Oliver!",
"imdbId": "tt0063385",
"releaseDate": "1968-12-20T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1968,
"releaseMonth": 11,
"releaseDay": 20
},
{ "year": "1969",
"title": "Midnight Cowboy",
"imdbId": "tt0064665",
"releaseDate": "1969-05-25T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1969,
"releaseMonth": 4,
"releaseDay": 25
},
{ "year": "1970",
"title": "Patton",
"imdbId": "tt0066206",
"releaseDate": "1970-02-18T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1970,
"releaseMonth": 1,
"releaseDay": 18
},
{ "year": "1971",
"title": "The French Connection",
"imdbId": "tt0067116",
"releaseDate": "1971-10-07T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1971,
"releaseMonth": 9,
"releaseDay": 7
},
{ "year": "1972",
"title": "The Godfather",
"imdbId": "tt0068646",
"releaseDate": "1972-03-22T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1972,
"releaseMonth": 2,
"releaseDay": 22
},
{ "year": "1973",
"title": "The Sting",
"imdbId": "tt0070735",
"releaseDate": "1973-12-25T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1973,
"releaseMonth": 11,
"releaseDay": 25
},
{ "year": "1974",
"title": "The Godfather Part II",
"imdbId": "tt0071562",
"releaseDate": "1974-12-18T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1974,
"releaseMonth": 11,
"releaseDay": 18
},
{ "year": "1975",
"title": "One Flew over the Cuckoo's Nest",
"imdbId": "tt0073486",
"releaseDate": "1975-11-19T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1975,
"releaseMonth": 10,
"releaseDay": 19
},
{ "year": "1976",
"title": "Rocky",
"imdbId": "tt0075148",
"releaseDate": "1976-11-21T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1976,
"releaseMonth": 10,
"releaseDay": 21
},
{ "year": "1977",
"title": "Annie Hall",
"imdbId": "tt0075686",
"releaseDate": "1977-04-20T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1977,
"releaseMonth": 3,
"releaseDay": 20
},
{ "year": "1978",
"title": "The Deer Hunter",
"imdbId": "tt0077416",
"releaseDate": "1978-12-08T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1978,
"releaseMonth": 11,
"releaseDay": 8
},
{ "year": "1979",
"title": "Kramer vs. Kramer",
"imdbId": "tt0079417",
"releaseDate": "1979-12-19T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1979,
"releaseMonth": 11,
"releaseDay": 19
},
{ "year": "1980",
"title": "Ordinary People",
"imdbId": "tt0081283",
"releaseDate": "1980-09-26T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1980,
"releaseMonth": 8,
"releaseDay": 26
},
{ "year": "1981",
"title": "Chariots of Fire",
"imdbId": "tt0082158",
"releaseDate": "1981-10-09T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1981,
"releaseMonth": 9,
"releaseDay": 9
},
{ "year": "1982",
"title": "Gandhi",
"imdbId": "tt0083987",
"releaseDate": "1982-12-07T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1982,
"releaseMonth": 11,
"releaseDay": 7
},
{ "year": "1983",
"title": "Terms of Endearment",
"imdbId": "tt0086425",
"releaseDate": "1983-11-20T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1983,
"releaseMonth": 10,
"releaseDay": 20
},
{ "year": "1984",
"title": "Amadeus",
"imdbId": "tt0086879",
"releaseDate": "1984-09-06T04:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1984,
"releaseMonth": 8,
"releaseDay": 6
},
{ "year": "1985",
"title": "Out of Africa",
"imdbId": "tt0089755",
"releaseDate": "1985-12-10T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1985,
"releaseMonth": 11,
"releaseDay": 10
},
{ "year": "1986",
"title": "Platoon",
"imdbId": "tt0091763",
"releaseDate": "1986-12-19T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1986,
"releaseMonth": 11,
"releaseDay": 19
},
{ "year": "1987",
"title": "The Last Emperor",
"imdbId": "tt0093389",
"releaseDate": "1987-11-19T05:00:00.000Z",
"releaseCountry": "USA",
"releaseYear": 1987,
"releaseMonth": 10,
"releaseDay": 19
},
{ "year": "1988",
"title": "Rain Man",
"imdbId": "tt00959