主頁 > 前端設計 > MongoDB Recipes:MongoDB CRUD Operations

MongoDB Recipes:MongoDB CRUD Operations

2020-09-22 07:21:28 前端設計

一,資料庫操作

1,Create Database

語法:
use <database name>

  • 無則創建,有則使用,

示例:

> use mydb
switched to db mydb

確認資料庫是否存在:

> db
mydb

這表明正在使用mydb資料庫,

2, Drop Database

語法:db.dropDatabase()

  • 要洗掉資料庫,請首先確保正在使用該資料庫,

示例:

> use mydb
switched to db mydb
>
> db.dropDatabase()
{ "ok" : 1 }

3,Display List of Databases

語法:show dbsshow databases;

  • show databases;用到了mongodb中為數不多的’;‘這個符號,

示例:

> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
>
> show databases;
admin 0.000GB
config 0.000GB
local 0.000GB
>
  • 新創建的資料庫mydb未顯示在串列中,這是因為資料庫需要至少一個集合來顯示在串列中,

4, Display the Version of MongoDB

語法:db.version()

示例:

> db.version()
4.2.8

5,Display a List of Commands

語法:db.help()

示例:

> db.help()
DB methods:
        db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [just calls db.runCommand(...)]
        db.aggregate([pipeline], {options}) - performs a collectionless aggregation on this database; returns a cursor
        db.auth(username, password)
        db.cloneDatabase(fromhost) - will only function with MongoDB 4.0 and below
        db.commandHelp(name) returns the help for the command
        db.copyDatabase(fromdb, todb, fromhost) - will only function with MongoDB 4.0 and below
        db.createCollection(name, {size: ..., capped: ..., max: ...})
        db.createUser(userDocument)
        db.createView(name, viewOn, [{$operator: {...}}, ...], {viewOptions})
        db.currentOp() displays currently executing operations in the db
        db.dropDatabase(writeConcern)
        db.dropUser(username)
        db.eval() - deprecated
        db.fsyncLock() flush data to disk and lock server for backups
        db.fsyncUnlock() unlocks server following a db.fsyncLock()
        db.getCollection(cname) same as db['cname'] or db.cname
        db.getCollectionInfos([filter]) - returns a list that contains the names and options of the db's collections
        db.getCollectionNames()
        db.getLastError() - just returns the err msg string
        db.getLastErrorObj() - return full status object
        db.getLogComponents()
        db.getMongo() get the server connection object
        db.getMongo().setSlaveOk() allow queries on a replication slave server
        db.getName()
        db.getProfilingLevel() - deprecated
        db.getProfilingStatus() - returns if profiling is on and slow threshold
        db.getReplicationInfo()
        db.getSiblingDB(name) get the db at the same server as this one
        db.getWriteConcern() - returns the write concern used for any operations on this db, inherited from server object if set
        db.hostInfo() get details about the server's host
        db.isMaster() check replica primary status
        db.killOp(opid) kills the current operation in the db
        db.listCommands() lists all the db commands
        db.loadServerScripts() loads all the scripts in db.system.js
        db.logout()
        db.printCollectionStats()
        db.printReplicationInfo()
        db.printShardingStatus()
        db.printSlaveReplicationInfo()
        db.resetError()
        db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into {cmdObj: 1}
        db.serverStatus()
        db.setLogLevel(level,<component>)
        db.setProfilingLevel(level,slowms) 0=off 1=slow 2=all
        db.setVerboseShell(flag) display extra information in shell output
        db.setWriteConcern(<write concern doc>) - sets the write concern for writes to the db
        db.shutdownServer()
        db.stats()
        db.unsetWriteConcern(<write concern doc>) - unsets the write concern for writes to the db
        db.version() current version of the server
        db.watch() - opens a change stream cursor for a database to report on all  changes to its non-system collections.

二,MongoDB CRUD Operations

不止CRUD,還討論了 embedded document and arrays,

Collections

MongoDB集合類似于RDBMS中的資料表, 在MongoDB中,當我們在一個集合中參考它們時,它們會自動創建:

db.person.insert({_id:100001,name:"Taanushree A S",age:10})
  • 如果不存在,此命令將創建一個名為person的集合,如果存在,則僅將檔案插入集合,

1. Create a Collection

語法:db.createCollection (<name>)

示例:

db.createCollection("person")
{ "ok" : 1 }

確認集合的存在:

> show collections
person

2. Create Capped Collections

capped collections,就是固定大小的collections,支持基于插入順序插入和檢索檔案的高吞吐量操作,作業方式類似于回圈緩沖區:一旦集合填滿了它所分配的空間,它就會覆寫集合中最老的檔案,從而為新檔案騰出空間,

這種特性決定了它的一些使用場景:

  • 存盤由大容量系統生成的日志資訊,在沒有索引的Capped Collections中插入檔案的速度接近于將日志資訊直接寫入檔案系統的速度,此外,內置的先入先出屬性在管理存盤使用時維護事件的順序,
  • 在一個Capped Collections中快取少量資料, 由于讀取快取而不是寫入大量快取,因此需要確保此集合始終保留在作業集中(即在RAM中),

Capped Collections的一些限制:

  • 無法對Capped Collections進行分片,
  • 不能使用聚合管道運算子$out來將結果寫入Capped Collections,
  • 無法從Capped Collections中洗掉檔案,
  • 創建索引可高效執行更新操作,

語法:db.createCollection (<name>,{capped:<boolean>,size:<number>,max :<number>})

  • 如果size欄位小于或等于4096,則集合的大小為size位元組,否則,MongoDB將提高所提供的大小,使其成為256的整數倍,
  • max表示允許的最大檔案數,

例子:

> db.createCollection("student",{capped: true,size:1000,max:2})
{ "ok" : 1 }
> db.student.isCapped()
true

可繼續插入資料進行特征測驗,此處我略了,

Create Operations

Create Operations可以將檔案插入到集合中, 這些插入操作針對單個集合, 在單個檔案級別,所有寫操作都是原子的,
在這里插入圖片描述

Insert Documents

語法:db.collection.insertOne()db.collection.insertMany()db.collection.insert()

示例:Insert a Single Document

> db.person.insertOne({_id:1001,name:"Taanushree AS",age:10})
{ "acknowledged" : true, "insertedId" : 1001 }
  • insertOne()回傳包含新插入的檔案的檔案_id,如果未指定_id欄位,則MongoDB會生成一個_id欄位,其中包含一個ObjectId值, _id欄位充當主鍵,
> db.person.insertOne({name:"Aruna MS",age:14})
{
        "acknowledged" : true,
        "insertedId" : ObjectId("5f64da530dc4211a1b87073c")
}

示例:Insert Multiple Documents

> db.person.insertMany([{_id:1003,name:"Anba V M",age:16},{_id:
... 1004,name:"shobana",age:44}])
{ "acknowledged" : true, "insertedIds" : [ 1003, 1004 ] }

db.collection.insert()單條多條都能插入,用的比較多,

Read Operations

MongoDB提供了find()方法來查詢檔案,

Query Documents

語法:db.collection.find()

  • pretty()讓結果更美觀,

示例:Select All Documents in a collection

> db.person.find({})
{ "_id" : 1001, "name" : "Taanushree AS", "age" : 10 }
{ "_id" : ObjectId("5f64db2a0dc4211a1b87073d"), "name" : "Aruna MS", "age" : 14 }
{ "_id" : 1003, "name" : "Anba V M", "age" : 16 }
{ "_id" : 1004, "name" : "shobana", "age" : 44 }

示例:Specify Equality Conditions
查詢中使用運算式<field>:<value>以過濾檔案,

> db.person.find({name:"shobana"})
{ "_id" : 1004, "name" : "shobana", "age" : 44 }

示例:Specify Conditions Using Query Operator
Query Selectors,

> db.person.find({age:{$gt:10}})
{ "_id" : ObjectId("5bac86dc773204ddade95819"), "name" : "Aruna
MS", "age" : 14 }
{ "_id" : 1003, "name" : "Anba V M", "age" : 16 }
{ "_id" : 1004, "name" : "shobana", "age" : 44 }

示例:Specify AND Conditions
<field1>:<value1>,<field2>:<value2>

db.person.find({ name:"shobana",age:{$gt:10}})
{ "_id" : 1004, "name" : "shobana", "age" : 44 }

示例:Specify OR Conditions
運算子$or從集合中選擇至少匹配一種條件的檔案,

db.person.find( { $or: [ { name: "shobana" }, { age: { $eq:
20 } } ] } )
{ "_id" : 1004, "name" : "shobana", "age" : 44 }

Update Operations

在這里插入圖片描述
在MongoDB中,更新操作針對單個集合,
MongoDB提供了修改運算子來修改欄位值,

{
 <update operator>: { <field1>: <value1>, ... },
 <update operator>: { <field2>: <value2>, ... },
 ...
}

Update Operators,

Update Documents

示例:Update a Single Document

> db.student.updateOne({name: "Joshi"},{$set:{"marks.english": 20}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
  • _id是無法更新的,
  • 這里涉及到嵌套查詢field.subfield “marks.english”,后面會講,

示例:Update Multiple Documents

> db.student.updateMany( { "result":"fail" }, { $set: {"marks.
english": 20, "marks.maths": 20 }})
{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }

示例:Replace a Document
通過將一個全新的檔案作為第二個引數傳遞給db.collection.replaceOne(),可以替換_id欄位以外的檔案的全部內容,

> db.student.replaceOne( { name: "John" }, {_id:1001,name:"John
",marks:{english:36,maths:39},result:"pass"})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" :
1 }
  • 檔案替換中不要包括更新運算子,
  • 替換時可省略_id欄位,因為_id欄位是不可變的, 但是,如果要包括_id欄位,請使用與當前值相同的值,

Delete Operations

在這里插入圖片描述
在MongoDB中,洗掉操作針對單個集合,

Delete Documents

示例:Delete Only One Document That Matches a Condition

> db.student.deleteOne({name: "John"})
{ "acknowledged" : true, "deletedCount" : 1 }

示例:Delete All Documents That Match a Condition

> db.student.deleteMany({name: "Jack"})
{ "acknowledged" : true, "deletedCount" : 2 }

示例:Delete All Documents from a Collection

> db.student.deleteMany({})
{ "acknowledged" : true, "deletedCount" : 3 }

三,MongoDB Import and Export

MongoDB Import

MongoDB匯入工具允許我們從JSON、CSV和TSV檔案匯入內容,但MongoDB匯入僅支持UTF-8編碼的檔案,

準備一個csv檔案:

c:\Sample\student.csv
_id,name,class
1,John,II
2,James,III
3,Joshi,I

匯入:

> mongoimport --db student --collection students --type csv
--headerline --file c:\Sample\student.csv

MongoDB Export

要使用Mongo export命令,請啟動mongod行程并打開另一個命令提示符以發出Mongo匯出命令,

匯出:

> mongoexport --db student --collection students --out C:\Sample\student.json

四,MongoDB中的嵌入式檔案

用嵌入式檔案可以讓我們將檔案嵌入另一個檔案:

{_id:1001,name:"John",marks:{english:35,maths:38},result:"pass"}

示例:

> use employee
switched to db employee
> db.employee.insertMany([
... {_id:1001,name:"John",address:{previous:"123,1st Main",current:"234,2nd Main"},unit:"Hadoop"},
... {_id:1002,name:"Jack", address:{previous:"Cresent Street",current:"234,Bald Hill Street"},unit:"MongoDB"},
... {_id:1003,name:"James", address:{previous:"Cresent Street",current:"234,Hill Street"},unit:"Spark"}
... ])
2020-09-19T01:48:53.885+0800 E  QUERY    [js] uncaught exception: BulkWriteError({
        "writeErrors" : [
                {
                        "index" : 0,
                        "code" : 11000,
                        "errmsg" : "E11000 duplicate key error collection: employee.employee index: _id_ dup key: { _id: 1001.0 }",
                        "op" : {
                                "_id" : 1001,
                                "name" : "John",
                                "address" : {
                                        "previous" : "123,1st Main",
                                        "current" : "234,2nd Main"
                                },
                                "unit" : "Hadoop"
                        }
                }
        ],
        "writeConcernErrors" : [ ],
        "nInserted" : 0,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
}) :
BulkWriteError({
        "writeErrors" : [
                {
                        "index" : 0,
                        "code" : 11000,
                        "errmsg" : "E11000 duplicate key error collection: employee.employee index: _id_ dup key: { _id: 1001.0 }",
                        "op" : {
                                "_id" : 1001,
                                "name" : "John",
                                "address" : {
                                        "previous" : "123,1st Main",
                                        "current" : "234,2nd Main"
                                },
                                "unit" : "Hadoop"
                        }
                }
        ],
        "writeConcernErrors" : [ ],
        "nInserted" : 0,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})
BulkWriteError@src/mongo/shell/bulk_api.js:367:48
BulkWriteResult/this.toError@src/mongo/shell/bulk_api.js:332:24
Bulk/this.execute@src/mongo/shell/bulk_api.js:1186:23
DBCollection.prototype.insertMany@src/mongo/shell/crud_api.js:326:5
@(shell):1:1
> db.employee.find().pretty()
{
        "_id" : 1001,
        "name" : "John",
        "address" : {
                "previous" : "123,1st Main",
                "current" : "234,2nd Main"
        },
        "unit" : "Hadoop"
}
{
        "_id" : 1002,
        "name" : "Jack",
        "address" : {
                "previous" : "Cresent Street",
                "current" : "234,Bald Hill Street"
        },
        "unit" : "MongoDB"
}
{
        "_id" : 1003,
        "name" : "James",
        "address" : {
                "previous" : "Cresent Street",
                "current" : "234,Hill Street"
        },
        "unit" : "Spark"
}

Query Embedded Documents

示例: Match an Embedded or Nested Document

> db.employee.find( { address: { previous:"Cresent Street",current:"234,Bald Hill Street" }} )
{ "_id" : 1002, "name" : "Jack", "address" : { "previous" : "Cresent Street", "current" : "234,Bald Hill Street" }, "unit" : "MongoDB" }

示例:Query on a Nested Field 查詢嵌套的檔案內容
過濾器語法:<field.subfield>:<value>

>  db.employee.find( { "address.previous": "Cresent Street" } )
{ "_id" : 1002, "name" : "Jack", "address" : { "previous" : "Cresent Street", "current" : "234,Bald Hill Street" }, "unit" : "MongoDB" }
{ "_id" : 1003, "name" : "James", "address" : { "previous" : "Cresent Street", "current" : "234,Hill Street" }, "unit" : "Spark" }

Working with Arrays

插入帶有陣列的資料:

> db.employeedetails.insertMany([
...  { name: "John", projects: ["MongoDB", "Hadoop","Spark"],scores:[25,28,29] },
...  { name: "James", projects: ["Cassandra","Spark"], scores:[26,24,23]},
...  { name: "Smith",projects: [ "Hadoop","MongoDB"], scores:[22,28,26]}
... ])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("5f64f61b713e47e2bf78851f"),
                ObjectId("5f64f61b713e47e2bf788520"),
                ObjectId("5f64f61b713e47e2bf788521")
        ]
}

查詢所有projects中包含[“Hadoop”, “MongoDB”]這種內容與內容順序的檔案:

> db.employeedetails.find( { projects: ["Hadoop", "MongoDB"] } )
{ "_id" : ObjectId("5f64f61b713e47e2bf788521"), "name" : "Smith", "projects" : [ "Hadoop", "MongoDB" ], "scores" : [ 22, 28, 26 ] }

示例:Query an Array for an Element

> db.employeedetails.find( { projects: "MongoDB" } )
{ "_id" : ObjectId("5badcbd5f10ab299920f0728"), "name" :
"John", "projects" : [ "MongoDB", "Hadoop", "Spark" ], "scores"
: [ 25, 28, 29 ] }
{ "_id" : ObjectId("5badcbd5f10ab299920f072a"), "name" : "Smith",
"projects" : [ "Hadoop", "MongoDB" ], "scores" : [ 22, 28, 26 ] }

示例:Specify Query Operators

> db.employeedetails.find( { scores:{$gt:26} } )
{ "_id" : ObjectId("5badcbd5f10ab299920f0728"), "name" :
"John", "projects" : [ "MongoDB", "Hadoop", "Spark" ], "scores"
: [ 25, 28, 29 ] }
{ "_id" : ObjectId("5badcbd5f10ab299920f072a"), "name" : "Smith",
"projects" : [ "Hadoop", "MongoDB" ], "scores" : [ 22, 28, 26 ] }

示例:Query an Array with Compound Filter Conditions on the Array Elements

> db.employeedetails.find( { scores: { $gt: 20, $lt: 24 } } )
{ "_id" : ObjectId("5badcbd5f10ab299920f0729"), "name" :
"James", "projects" : [ "Cassandra", "Spark" ], "scores" :
[ 26, 24, 23 ] }
{ "_id" : ObjectId("5badcbd5f10ab299920f072a"), "name" :
"Smith", "projects" : [ "Hadoop", "MongoDB" ], "scores" :
[ 22, 28, 26 ] }

示例:Using the $elemMatch operator

$elemMatch運算子將查詢結果中的<array>欄位的內容限制為只包含與$elemMatch條件匹配的第一個元素,

> db.employeedetails.find({scores: {$elemMatch: { $gt: 23, $lt: 27}} } )
{ "_id" : ObjectId("5f64f61b713e47e2bf78851f"), "name" : "John", "projects" : [ "MongoDB", "Hadoop", "Spark" ], "scores" : [ 25, 28, 29 ] }
{ "_id" : ObjectId("5f64f61b713e47e2bf788520"), "name" : "James", "projects" : [ "Cassandra", "Spark" ], "scores" : [ 26, 24, 23 ] }
{ "_id" : ObjectId("5f64f61b713e47e2bf788521"), "name" : "Smith", "projects" : [ "Hadoop", "MongoDB" ], "scores" : [ 22, 28, 26 ] }

示例:Query an Array Element by Index Position

> db.employeedetails.find( { "scores.2": { $gt: 26 } } )
{ "_id" : ObjectId("5badcbd5f10ab299920f0728"), "name" :
"John", "projects" : [ "MongoDB", "Hadoop", "Spark" ], "scores"
: [ 25, 28, 29 ] }
  • 陣列下標從0開始,

示例:Using the $size Operator

$size選擇指定陣列大小的檔案,

> db.employeedetails.find( { "projects": { $size: 2 } } )
{ "_id" : ObjectId("5badcbd5f10ab299920f0729"), "name" :
"James", "projects" : [ "Cassandra", "Spark" ], "scores" : [
26, 24, 23 ] }
{ "_id" : ObjectId("5badcbd5f10ab299920f072a"), "name" :
"Smith", "projects" : [ "Hadoop", "MongoDB" ], "scores" : [ 22,
28, 26 ] }

示例:Using the p u s h O p e r a t o r ‘ push Operator ` pushOperatorpush`添加資料到陣列,

> db.employeedetails.update({name:"James"},{$push:{Location: "US"}})
> db.employeedetails.find({name:"James"})
{ "_id" : ObjectId("5c04bef3540e90478dd92f4e"), "name" :
"James", "projects" : [ "Cassandra", "Spark" ], "scores" :
[ 26, 24, 23 ], "Location" : [ "US" ] }
  • 也可以像陣列中添加多個數值,
> db.employeedetails.update({name: "Smith"},{$push:{Location:{$each:["US","UK"]}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.employeedetails.find().pretty()
{
        "_id" : ObjectId("5f64f61b713e47e2bf78851f"),
        "name" : "John",
        "projects" : [
                "MongoDB",
                "Hadoop",
                "Spark"
        ],
        "scores" : [
                25,
                28,
                29
        ]
}
{
        "_id" : ObjectId("5f64f61b713e47e2bf788520"),
        "name" : "James",
        "projects" : [
                "Cassandra",
                "Spark"
        ],
        "scores" : [
                26,
                24,
                23
        ],
        "Location" : [
                "US"
        ]
}
{
        "_id" : ObjectId("5f64f61b713e47e2bf788521"),
        "name" : "Smith",
        "projects" : [
                "Hadoop",
                "MongoDB"
        ],
        "scores" : [
                22,
                28,
                26
        ],
        "Location" : [
                "US",
                "UK"
        ]
}

示例:Using the $addToSet Operator

$addToSet只在集合中不存在的情況下向陣列中添加元素,

> db.employeedetails.update( {name: "James"}, { $addToSet: {hobbies: [ "drawing", "dancing"]} })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

示例:Using the $pop Operator

> db.employeedetails.find( {name: "James"}).pretty()
{
        "_id" : ObjectId("5f64f61b713e47e2bf788520"),
        "name" : "James",
        "projects" : [
                "Cassandra",
                "Spark"
        ],
        "scores" : [
                26,
                24,
                23
        ],
        "Location" : [
                "US"
        ],
        "hobbies" : [
                [
                        "drawing",
                        "dancing"
                ]
        ]
}

移除scores陣列中的第一個元素:
> db.employeedetails.update( {name: "James"},{ $pop:{scores:-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.employeedetails.find( {name: "James"}).pretty()
{
        "_id" : ObjectId("5f64f61b713e47e2bf788520"),
        "name" : "James",
        "projects" : [
                "Cassandra",
                "Spark"
        ],
        "scores" : [
                24,
                23
        ],
        "Location" : [
                "US"
        ],
        "hobbies" : [
                [
                        "drawing",
                        "dancing"
                ]
        ]
}

移除scores陣列中的最后一個元素:
> db.employeedetails.update( {name: "James"},{ $pop: {scores:1}})

Query an Array of Embedded Documents

示例:Query for a Document Nested in an Array
準備資料:

> use student
switched to db student
>  db.studentmarks.insertMany([
...     {name:"John",marks:[
...         {class: "II", total: 489},
...         { class: "III", total: 490 }
...     ]},
...     {name:"James",marks:[
...         {class: "III", total: 469 },
...         {class: "IV",total: 450}
...     ]},
...     {name:"Jack",marks:[
...         {class:"II", total: 489 },
...         {class: "III", total: 390}
...     ]},
...     {name:"Smith", marks:[
...         {class:"III", total: 489},
...         {class: "IV", total: 490}
...     ]},
...     {name:"Joshi",marks:[
...         {class: "II", total: 465},
...         { class: "III",total: 470}
...     ]}
... ])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("5f64ffd1713e47e2bf788522"),
                ObjectId("5f64ffd1713e47e2bf788523"),
                ObjectId("5f64ffd1713e47e2bf788524"),
                ObjectId("5f64ffd1713e47e2bf788525"),
                ObjectId("5f64ffd1713e47e2bf788526")
        ]
}
> db.studentmarks.find( { "marks": {class: "II", total: 489}})
{ "_id" : ObjectId("5bae10e6f10ab299920f073f"), "name" :
"John", "marks" : [ { "class" : "II", "total" : 489 }, {
"class" : "III", "total" : 490 } ] }
{ "_id" : ObjectId("5bae10e6f10ab299920f0741"), "name" : "Jack",
"marks" : [ { "class" : "II", "total" : 489 }, { "class" :
"III", "total" : 390 } ] }

示例:Query for a Field Embedded in an Array of Documents

> db.studentmarks.find( { 'marks.total': { $lt: 400 } } )
{ "_id" : ObjectId("5bae10e6f10ab299920f0741"), "name" :
"Jack", "marks" : [ { "class" : "II", "total" : 489 }, {
"class" : "III", "total" : 390 } ] }

示例:Array Index to Query for a Field in the Embedded Document

> db.studentmarks.find( { 'marks.0.class': "II" } )
{ "_id" : ObjectId("5bae10e6f10ab299920f073f"), "name" :
"John", "marks" : [ { "class" : "II", "total" : 489 },
{ "class" : "III", "total" : 490 } ] }
{ "_id" : ObjectId("5bae10e6f10ab299920f0741"), "name" :
"Jack", "marks" : [ { "class" : "II", "total" : 489 },
{ "class" : "III", "total" : 390 } ] }
{ "_id" : ObjectId("5bae10e6f10ab299920f0743"), "name" :
"Joshi", "marks" : [ { "class" : "II", "total" : 465 },
{ "class" : "III", "total" : 470 } ] }

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/102883.html

標籤:其他

上一篇:無名創新多功能開源遙控器用戶手冊

下一篇:2020年##數學建模##F題(質心平衡)和C題(P300電位)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more