自建 MongoDB 实战 | MongoDB 文档查询

本文详细介绍了 MongoDB 的文档查询和操作,包括 find、update、delete、投影、排序、索引、聚合等功能,并展示了 Pymongo 的使用方法,是 MongoDB 实践操作的全面教程。
摘要由CSDN通过智能技术生成

deab6935e144182ddee572c2a376b35e.gif

新钛云服已累计为您分享703篇技术干货

aded3f63f25c039e33724c50678530d8.gif

专题介绍:

八篇文章,近五万字。自建 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>})

我们在创建集合时,还可以指定一些可选的选项。如下表所示:

492f6a17ae902752d3022ec7565f1296.png

一个例子:

> 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值