MongoDB實(shí)戰(zhàn)項(xiàng)目與重點(diǎn)總結(jié)

about-BY-gentle.jpg

mongodb特點(diǎn)其一:
自動(dòng)分片:支持云級(jí)別的伸縮性:自動(dòng)分片功能支持水平的數(shù)據(jù)庫(kù)集群,可動(dòng)態(tài)添加額外的機(jī)器
集群定義:
擁有很多服務(wù)器,共同工作,避免了一臺(tái)服務(wù)器有限的資源,這樣可以分多個(gè)服務(wù)器去執(zhí)行,期間存在主從備份,從站對(duì)主站的備份.整體是樹(shù)狀結(jié)構(gòu),致使可以無(wú)限擴(kuò)大添加(節(jié)點(diǎn)),因此不怕丟失
成為非關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)。

mongodb,沒(méi)表概念,是集合。
不是mysql關(guān)系數(shù)據(jù)庫(kù)的表與表的關(guān)系,是文檔和文檔之間的關(guān)系

非關(guān)系數(shù)據(jù)庫(kù):
redis基于內(nèi)存存儲(chǔ),鍵值存儲(chǔ)
mongodb 文檔型

mongodb 儲(chǔ)存類(lèi)型
儲(chǔ)存的是bson文件類(lèi)型,和jsion類(lèi)似.
json二種數(shù)據(jù)格式
數(shù)組  別的地方叫做列表
字典

主從切換
主服務(wù)器掛,備份下的從服務(wù)器,立馬變?yōu)橹鞣?wù)器.

不建議二進(jìn)制文件放到數(shù)據(jù)庫(kù),因?yàn)樘罅耍簿褪谴鎮(zhèn)€鏈接.

注意:
mysql table joins
表連接,MongoDB不支持
集合之間不能鏈接.

MongoDB
不設(shè)置主鍵,默認(rèn)生成主鍵.根據(jù)時(shí)間戳生成.因?yàn)闀r(shí)間唯一的,達(dá)到唯一性.

db.stats()
查狀態(tài)

db.dropDatabase()
當(dāng)前字哪里,刪除的就是誰(shuí).

show collections
顯示所有集合.

use切換數(shù)據(jù)庫(kù) 也代表創(chuàng)建了 但是看不到.

size判斷后 執(zhí)行max

name:集合的名字
capped:是否啟用集合限制,如果開(kāi)啟需要制定一個(gè)限制條件,默認(rèn)為不啟用,這個(gè)參數(shù)沒(méi)有實(shí)際意義
size:限制集合使用空間的大小,默認(rèn)為沒(méi)有限制
max:集合中最大條數(shù)限制,默認(rèn)為沒(méi)有限制
autoIndexId:是否使用_id作為索引,默認(rèn)為使用(true或false)
size的優(yōu)先級(jí)比max要高

常用方法介紹:
1、一般來(lái)說(shuō),我們創(chuàng)建集合用db.createCollection(name),如:db.createCollection("log"),創(chuàng)建一個(gè)名字為log的集合,沒(méi)有任何的大小,數(shù)量限制,使用_id作為默認(rèn)索引;

2、限制集合空間的大?。篸b.createCollection("log",{size:1024})或db.createCollection("log",{capped:true,size:1024}),創(chuàng)建一個(gè)名字為log集合,限制它的空間大小為1M,如果超過(guò)1M的大小,則會(huì)刪除最早的記錄;
3、限制集合的最大條數(shù):db.createCollection("log",{max:1024}),創(chuàng)建一個(gè)名字為log集合,最大條數(shù)為1024條,超過(guò)1024再插入數(shù)據(jù)的話(huà)會(huì)刪除最早的一條記錄。這個(gè)不能使用capped:true,否則會(huì)報(bào)錯(cuò);
4、即限制最大條數(shù)有限制使用空間大小:db.createCollection("log",{size:1024,max:1024})或db.createCollection("log",{capped:true,size:1024,max:1024}),限制集合最大使用空間為1M,最大條數(shù)為1024條

以上是參考官方文檔和實(shí)際測(cè)試得出的,也可以看出capped參數(shù)沒(méi)有什么用處,用不用都可以。

db.student.update({name:'王干'},{$set:{age:30}})

{ "_id" : ObjectId("5b7bc337492da74efcdeb628"), "name" : "王干", "age" : 30 }
{ "_id" : ObjectId("5b7bc34b492da74efcdeb629"), "name" : "王干", "age" : 20, "gender" : 1 }

db.student.update({name:'王干'},{age:50})
全文檔更新
{ "_id" : ObjectId("5b7bc337492da74efcdeb628"), "age" : 50 }
{ "_id" : ObjectId("5b7bc34b492da74efcdeb629"), "name" : "王干", "age" : 20, "gender" : 1 }

db.student.update({name:'王干'},{$set:{age:30}},{multi:true})
全部更新       條件?。。洌幔睿?/p>

找不到數(shù)據(jù)插入一條,并且修改,默認(rèn)false

db.student.update({name:'李三'},{name:'李八'},{upsert:true})
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("5b7cb61ff5d047b9471c8092")
})
db.student.find()
{ "_id" : ObjectId("5b7cb61ff5d047b9471c8092"), "name" : "李八" }

和update寫(xiě)法區(qū)別:save在同一個(gè){}中用id查找
save全文檔更新.通過(guò)id去查找,

db.student.save({_id:ObjectId("5b7bc337492da74efcdeb628"),name:'xx'})
{ "_id" : ObjectId("5b7bc337492da74efcdeb628"), "name" : "xx" }

id不存在,新插入數(shù)據(jù),id自己設(shè)的
db.student.save({_id:2018,name:'xx'})
{ "_id" : 2018, "name" : "xx" }

不跟id,相當(dāng)于插入條數(shù)據(jù),自動(dòng)生成新的id
save先遍歷在插,效率低.

db.student.save({name:'xx'})

{ "_id" : ObjectId("5b7cb837492da74efcdeb635"), "name" : "xx" }

刪除,全部name:"李八"

db.student.remove({name:"李八"})

刪除,一個(gè)name:"xx"   后面接1 ?。裕遥眨?br> db.student.remove({name:"xx"},{justOne:true])

db.student.remove({name:"xx"},1)

刪除指定id

db.student.remove({_id:2018})

查詢(xún)
所有

db.student.find()
db.student.find({})
指定
db.student.find({條件})

and

db.student.find({name:'zz',age:25})  相當(dāng)and
{ "_id" : ObjectId("5b7cbada492da74efcdeb639"), "name" : "zz", "age" : 25, "gender" : "女" }

小于

db.student.find({name:'zz',age:81})
db.student.find({age:{$lt:20}})
{ "_id" : ObjectId("5b7cbada492da74efcdeb638"), "name" : "1zz", "age" : 12, "gender" : "女" }

({or:[{age:10},{age:22}]})
or 相當(dāng)于in范圍  查找符合二者條件中任意符合的一條.

db.student.find({$or:[{age:10},{age:22}]})
{ "_id" : ObjectId("5b7cba98492da74efcdeb636"), "name" : "zzz", "age" : 22, "gender" : "女" }
{ "_id" : ObjectId("5b7cbada492da74efcdeb63a"), "name" : "fzz", "age" : 22, "gender" : "男" }

in 查找12,22  查找年齡在哪個(gè)范圍
({age:{$in:[12,22]}})

db.student.find({age:{$in:[12,22]}})
{ "_id" : ObjectId("5b7cba98492da74efcdeb636"), "name" : "zzz", "age" : 22, "gender" : "女" }
{ "_id" : ObjectId("5b7cbada492da74efcdeb638"), "name" : "1zz", "age" : 12, "gender" : "女" }
{ "_id" : ObjectId("5b7cbada492da74efcdeb63a"), "name" : "fzz", "age" : 22, "gender" : "男" }

不在范圍內(nèi)

db.student.find({age:{$nin:[12,22]}})
{ "_id" : ObjectId("5b7bc34b492da74efcdeb629"), "name" : "王干", "age" : 30, "gender" : 1 }
{ "_id" : ObjectId("5b7bc40a492da74efcdeb62a"), "name" : "cc" }
{ "_id" : "20180821", "name" : "x" }
{ "_id" : ObjectId("5b7bc4ea492da74efcdeb62b"), "name" : "vv" }
{ "_id" : ObjectId("5b7bc547492da74efcdeb62c"), "name" : "xvv" }
{ "_id" : ObjectId("5b7bc547492da74efcdeb62d"), "age" : 81 }
{ "_id" : ObjectId("5b7cb837492da74efcdeb635"), "name" : "xx" }
{ "_id" : ObjectId("5b7cbada492da74efcdeb637"), "name" : "zgg", "age" : 32, "gender" : "女" }
{ "_id" : ObjectId("5b7cbada492da74efcdeb639"), "name" : "zz", "age" : 25, "gender" : "女" }

正則
//

db.student.find({name:/.*z/})
regex db.student.find({gender:{regex:'男|女'}})

自定義查詢(xún)

db.student.find({$where:function(){return this.gender=='女'}})

type查找指定類(lèi)型文檔

db.student.find({$where:function(){return this.gender=='女'}})

limit限制查詢(xún)
跳過(guò)前二,返回之后二
skip跳過(guò)行數(shù)

db.student.find().limit(2).skip(2)
跳過(guò)放在linit前后都可以.

格式化顯示結(jié)果

db.student.find().pretty()    pretty [?pr?ti]
{
"_id" : ObjectId("5b7cba98492da74efcdeb636"),
"name" : "zzz",
"age" : 22,
"gender" : "女"
}
{
"_id" : ObjectId("5b7cbada492da74efcdeb637"),
"name" : "zgg",
"age" : 32,
"gender" : "女"
}
{
"_id" : ObjectId("5b7cbada492da74efcdeb638"),
"name" : "1zz",
"age" : 12,
"gender" : "女"
}
{
"_id" : ObjectId("5b7cbada492da74efcdeb639"),
"name" : "zz",
"age" : 25,
"gender" : "女"
}
{
"_id" : ObjectId("5b7cbada492da74efcdeb63a"),
"name" : "fzz",
"age" : 22,
"gender" : "男"
}

查詢(xún)語(yǔ)句
類(lèi)型 數(shù)字 備注
Double 1 雙精度浮點(diǎn)數(shù) - 此類(lèi)型用于存儲(chǔ)浮點(diǎn)值
String 2 字符串 - 這是用于存儲(chǔ)數(shù)據(jù)的最常用的數(shù)據(jù)類(lèi)型。MongoDB中的字符串必須為UTF-8
Object 3 對(duì)象 - 此數(shù)據(jù)類(lèi)型用于嵌入式文檔
Array 4 數(shù)組 - 此類(lèi)型用于將數(shù)組或列表或多個(gè)值存儲(chǔ)到一個(gè)鍵中
Binary data 5 二進(jìn)制數(shù)據(jù) - 此數(shù)據(jù)類(lèi)型用于存儲(chǔ)二進(jìn)制數(shù)據(jù)
Undefined 6 已廢棄
Object id 7 對(duì)象ID - 此數(shù)據(jù)類(lèi)型用于存儲(chǔ)文檔的ID
Boolean 8 布爾類(lèi)型 - 此類(lèi)型用于存儲(chǔ)布爾值(true / false)值
Date 9 日期 - 此數(shù)據(jù)類(lèi)型用于以UNIX時(shí)間格式存儲(chǔ)當(dāng)前日期或時(shí)間。可以通過(guò)創(chuàng)建日期對(duì)象并將日,月,年的日期進(jìn)行指定自己需要的日期時(shí)間
Null 10 Null - 此類(lèi)型用于存儲(chǔ)Null值
Regular 11 正則表達(dá)式 - 此數(shù)據(jù)類(lèi)型用于存儲(chǔ)正則表達(dá)式
JavaScript 13 代碼 - 此數(shù)據(jù)類(lèi)型用于將JavaScript代碼存儲(chǔ)到文檔中
Symbol 14 符號(hào) - 該數(shù)據(jù)類(lèi)型與字符串相同;但是,通常保留用于使用特定符號(hào)類(lèi)型的語(yǔ)言
JavaScript (with scope) 15 代碼 - 此數(shù)據(jù)類(lèi)型用于將帶作用域的JavaScript代碼存儲(chǔ)到文檔中
32-bit integer 16 32位整型 - 此類(lèi)型用于存儲(chǔ)數(shù)值
Timestamp 17 時(shí)間戳 - 當(dāng)文檔被修改或添加時(shí),可以方便地進(jìn)行錄制
64-bit integer 18 64位整型 - 此類(lèi)型用于存儲(chǔ)數(shù)值
Min key 255 最小鍵 - 此類(lèi)型用于將值與最小BSON元素進(jìn)行比較
Max key 127 最大鍵 - 此類(lèi)型用于將值與最大BSON元素進(jìn)行比較

輸入整型,不寫(xiě)默認(rèn)浮點(diǎn)

db.student.insert({name:'李啊',age:NumberInt(20)})

查看數(shù)字類(lèi)型
db.student.find({age:{$type:'number'}})

排序

db.student.find().sort({age:1})
db.student.find().sort({age:-1})
先age降在升
db.student.find().sort({age:-1,_id:1})

去重

db.student.distinct('gender',{})
db.集合名稱(chēng).distinct('去重字段',{條件})
db.student.distinct('age',{name:/.*1/})

投影
指定返回的字段(mysql中的檢索列功能)

1顯示,0不顯示

這樣就會(huì)返回name,在name下,沒(méi)有age字段,所以報(bào)錯(cuò)

db.student.find({},{name:1,age:0})

只顯示不為0的.
注意:find({},{age:0})

db.student.find({},{age:0})
注意01區(qū)別

COUNT
統(tǒng)計(jì)數(shù)量
查找一共出現(xiàn)次數(shù)

db.student.find().count()
15
db.student.count()
15

count后跟條件.

db.student.count({age:{gt:20}}) 7 這樣設(shè)置,后面的COUNT就會(huì)失效 db.student.find().count({age:{gt:20}})
15
解決辦法,在find上加條件,返回結(jié)果,在統(tǒng)計(jì)次數(shù).
db.student.find({age:{$gt:20}}).count()
7

db.books.aggregate([{group:{_id:'by_user',count:{$sum:1}}}])
{ "_id" : "Neo4j", "count" : 1 }
{ "_id" : "w3cschool.cc", "count" : 3 }

?sum:1相當(dāng)于count/sum:"$字段名"相當(dāng)于sum()

做id分組了
sum?。薄 ∠喈?dāng)倍數(shù)

相當(dāng)于concat,返回一個(gè)數(shù)組

db.books.aggregate([{group:{_id:'by_user',push:{first:'push'}}}])
{ "_id" : "Neo4j", "push" : null }
{ "_id" : "w3cschool.cc", "push" : null }

原句
{ "_id" : ObjectId("5b7d0c632bffdb5c10d72577"), "title" : "Neo4j Overview", "description" : "Neo4j is no sql database", "by_user" : "Neo4j", "url" : "http://www.neo4j.com",
"tags" : [ "neo4j", "database", "NoSQL" ],
"likes" : 750 }

$unwind 將文檔中的某一個(gè)數(shù)組類(lèi)型字段拆分成多條,每條包含數(shù)組中的一個(gè)值。

db.books.aggregate([{unwind:'tags'}])
執(zhí)行效果
{ "_id" : ObjectId("5b7d0c632bffdb5c10d72577"), "title" : "Neo4j Overview", "description" : "Neo4j is no sql database", "by_user" : "Neo4j", "url" : "http://www.neo4j.com",
"tags" : "neo4j",
"likes" : 750 }
{ "_id" : ObjectId("5b7d0c632bffdb5c10d72577"), "title" : "Neo4j Overview", "description" : "Neo4j is no sql database", "by_user" : "Neo4j", "url" : "http://www.neo4j.com",
"tags" : "database",
"likes" : 750 }
{ "_id" : ObjectId("5b7d0c632bffdb5c10d72577"), "title" : "Neo4j Overview", "description" : "Neo4j is no sql database", "by_user" : "Neo4j", "url" : "http://www.neo4j.com",

"tags" : "NoSQL",
"likes" : 750 }

push補(bǔ)充

db.jobdesc.aggregate([{group:{_id:'jobname',needpople:{push:'needpople'}}}])
區(qū)別:,needpople:{push:'needpople'}}}])

{ "_id" : "python2", "needpople" : [ 5 ] }
{ "_id" : "java", "needpople" : [ 1 ] }
{ "_id" : "ios", "needpople" : [ 2 ] }
{ "_id" : "python", "needpople" : [ 3, 2 ] }

db.jobdesc.aggregate([{group:{_id:'jobname',needpople:{push:'$$ROOT'}}}]) 區(qū)別:,needpople:{push:'$$ROOT'}}}])

{ "_id" : "python2", "needpople" : [ { "_id" : ObjectId("5b7d4cc01eba872641d89f80"), "jobname" : "python2", "workyears" : 5, "tags" : "[python,scrapy]", "needpople" : 5, "age" : 24 } ] }
{ "_id" : "java", "needpople" : [ { "_id" : ObjectId("5b7d4cc01eba872641d89f7f"), "jobname" : "java", "workyears" : "2", "tags" : "[java, mysql]", "needpople" : 1, "age" : 23 } ] }
{ "_id" : "ios", "needpople" : [ { "_id" : ObjectId("5b7d4c10c2f51973c02e326f"), "jobname" : "ios", "workyears" : "3", "tags" : "[OS,mysql,mongodb]", "needpople" : 2, "age" : 25 } ] }
{ "_id" : "python", "needpople" : [ { "_id" : ObjectId("5b7d4b14c2f51973c02e326e"), "jobname" : "python", "workyears" : "3", "tags" : "[python,scrapy,mongodb]", "needpople" : 3, "age" : 20 }, { "_id" : ObjectId("5b7d4cc01eba872641d89f81"), "jobname" : "python", "workyears" : "2", "tags" : "[scrapy,mongodb]", "needpople" : 2, "age" : 30 } ] }

全文索引相當(dāng)于模糊索引
unique  會(huì)遍歷全文,效率低

查看所有索引

db.jobdesc.getIndexes()

創(chuàng)建索引

db.jobdesc.createIndex({jobname:1})

查到索引

db.jobdesc.find({jobname:'python'})

查看當(dāng)前使用索引信息

db.jobdesc.find({jobname:'python'}).explain()

多條件,復(fù)合索引

查數(shù)組,要寫(xiě)全,順序一一對(duì)應(yīng)(要按照順序弄),才能查到

全文索引text文本格式
通過(guò)空格分開(kāi)
特殊符號(hào)也能分割.

dropDups
3.x以后就被廢棄了.

稀疏索引
sparse

未加稀疏的時(shí)候,對(duì)于沒(méi)有的字段默認(rèn)創(chuàng)建字段,值默認(rèn)為空null.加稀疏以后,不會(huì)索引沒(méi)有key的值.

小于60按60算
TTL日期索引

刪除過(guò)后,刪除不干凈.存在
碎片的索引,沒(méi)有刪除干凈,這時(shí),可以,刪除然后再重新在建立.
重置索引

索引是存在內(nèi)存的,數(shù)據(jù)是放在磁盤(pán)的.

對(duì)那個(gè)數(shù)據(jù)庫(kù)操作權(quán)限
db:'admin'

etc開(kāi)安全
31 security:
32 authorization: enabled

admin自己設(shè)置的數(shù)據(jù)庫(kù)
cc@cc-Inspiron-3542:~$ mongo -u 'cc' -p '12345' --authenticationDatabase admin

sort  無(wú)$

db.jobdesc.find({'age1':null}).explain()
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "jobs1.jobdesc",
"indexFilterSet" : false,
"parsedQuery" : {
"age1" : {
"eq" : null } }, "winningPlan" : { "stage" : "COLLSCAN", "filter" : { "age1" : { "eq" : null
}
},
"direction" : "forward"
},
"rejectedPlans" : [ ]
},
"serverInfo" : {
"host" : "cc-Inspiron-3542",
"port" : 27017,
"version" : "4.0.1",
"gitVersion" : "54f1582fc6eb01de4d4c42f26fc133e623f065fb"
},
"ok" : 1
}

db.jobdesc.find({'age1':null}).explain()
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "jobs1.jobdesc",
"indexFilterSet" : false,
"parsedQuery" : {
"age1" : {
"eq" : null } }, "winningPlan" : { "stage" : "FETCH", "filter" : { "age1" : { "eq" : null
}
},
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"age1" : 1
},

            "indexName" : "age1_1",
            "isMultiKey" : false,
            "multiKeyPaths" : {
                "age1" : [ ]
            },
            "isUnique" : false,
            "isSparse" : false,
            "isPartial" : false,
            "indexVersion" : 2,
            "direction" : "forward",
            "indexBounds" : {
                "age1" : [
                    "[null, null]"
                ]
            }
        }
    },
    "rejectedPlans" : [ ]
},
"serverInfo" : {
    "host" : "cc-Inspiron-3542",
    "port" : 27017,
    "version" : "4.0.1",
    "gitVersion" : "54f1582fc6eb01de4d4c42f26fc133e623f065fb"
},
"ok" : 1

}

db.jobdesc.find({'age1':null}).explain()
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "jobs1.jobdesc",
"indexFilterSet" : false,
"parsedQuery" : {
"age1" : {
"eq" : null } }, "winningPlan" : { "stage" : "FETCH", "filter" : { "age1" : { "eq" : null
}
},
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"age1" : 1
},
"indexName" : "age1_1",
"isMultiKey" : false,
"multiKeyPaths" : {
"age1" : [ ]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"age1" : [
"[null, null]"
]
}
}
},
"rejectedPlans" : [ ]
},
"serverInfo" : {
"host" : "cc-Inspiron-3542",
"port" : 27017,
"version" : "4.0.1",
"gitVersion" : "54f1582fc6eb01de4d4c42f26fc133e623f065fb"
},
"ok" : 1
}

多權(quán)限 ?
roles:[{role:''},{role:''}]
roles:[{role:''}}]

全文索引
全文索引的查找:
1:使用全文索引查詢(xún)不需要指定全文索引的字段名字——直接使用text,search即可
2:在MongoDB中每個(gè)數(shù)據(jù)集合只允許創(chuàng)建一個(gè)全文索引,不過(guò)這個(gè)全文索引可以針對(duì)一個(gè)、多個(gè)、全部的數(shù)據(jù)集合的字段來(lái)創(chuàng)建。
3:查詢(xún)多個(gè)關(guān)鍵詞,可以使用空格將多個(gè)關(guān)鍵詞分開(kāi)——空格——或的關(guān)系
4:指定不包含的字段使用-來(lái)表示—— -:非的關(guān)系
5:引號(hào)包括起來(lái)代表與的關(guān)系—— \”\”:與的關(guān)系

db.articles.find({text:{search:"coffee"}})
db.articles.find({text:{search:"aa bb cc"}}) #空格代表或操作,aa或bb或cc
db.articles.find({text:{search:"aa bb -cc"}}) #-號(hào)為非操作,即不包含cc的
db.articles.find({text:{search: ""aa" "bb" "cc""}}) #加雙引號(hào)可以提供與關(guān)系

外接
間隙索引與唯一約束

在唯一索引中,唯一索引會(huì)把null當(dāng)做值,也就是說(shuō)為null的通常只能有一個(gè)。后面的null將無(wú)法插入。
//下面創(chuàng)建一個(gè)帶有唯一約束的稀疏索引
> db.scores.createIndex( { score: 1 } , { sparse: true, unique: true } )
{
        "ok" : 0,
        "errmsg" : "Index with name: score_1 already exists with different options",
        "code" : 85
}

//由于score列上已經(jīng)存在一個(gè)索引了,因此提示我們,需要先刪除,再創(chuàng)建

> db.scores.dropIndex("score_1")
{ "nIndexesWas" : 2, "ok" : 1 }                  

> db.scores.createIndex( { score: 1 } , { sparse: true, unique: true } )
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}

//下面嘗試插入一些帶有score鍵以及不帶有score鍵的文檔,如下,可以成功插入
> db.scores.insert( { "userid": "AAAAAAA", "score": 43 } )
WriteResult({ "nInserted" : 1 })
> db.scores.insert( { "userid": "CCCCCCC" } )
WriteResult({ "nInserted" : 1 })

//下面插入一些score相關(guān)的文檔,提示重復(fù),如下示例
> db.scores.insert( { "userid": "AAAAAAA", "score": 82 } )
WriteResult({
        "nInserted" : 0,
        "writeError" : {
                "code" : 11000,
                "errmsg" : "E11000 duplicate key error collection: test.scores index: score_1 dup key: { : 82.0 }"
        }
})
> db.scores.insert( { "userid": "BBBBBBB", "score": 90 } )
WriteResult({
        "nInserted" : 0,
        "writeError" : {
                "code" : 11000,
                "errmsg" : "E11000 duplicate key error collection: test.scores index: score_1 dup key: { : 90.0 }"
        }
}

本地ip可不寫(xiě)
mongodump -o '/home/cc/桌面/backup'

json后面可以不加-f默認(rèn)導(dǎo)出所有字段
mongoexport -d dbname -c collectionname -o file --type json/csv -f field

導(dǎo)出
mongoexport -d class1804 -c books -o '/home/cc/桌面/backup/books.csv' --type csv -f '_id,title,url'

數(shù)據(jù)庫(kù)不用先創(chuàng)建
集合相反

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,303評(píng)論 2 89
  • 任何數(shù)據(jù)庫(kù)中查詢(xún)都是最麻煩的,在MongoDB中對(duì)于查詢(xún)的支持非常到位,有關(guān)系運(yùn)算,邏輯運(yùn)算,數(shù)組運(yùn)算等等首先對(duì)于...
    許先森的許閱讀 3,091評(píng)論 0 1
  • 簡(jiǎn)介 MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的NoSQL數(shù)據(jù)庫(kù) 由C++語(yǔ)言編寫(xiě),運(yùn)行穩(wěn)定,性能高 旨在為 WE...
    大熊_7d48閱讀 37,866評(píng)論 1 9
  • 學(xué)習(xí)《MongoDB 權(quán)威指南·第2版》的筆記,結(jié)合 MongoDB 官方最新文檔(v3.6),簡(jiǎn)單記錄一些概念、...
    小魚(yú)愛(ài)小蝦閱讀 6,207評(píng)論 0 5
  • 簡(jiǎn)介 NoSQL : 全名為Not Only SQL, 指的是非關(guān)系型的數(shù)據(jù)庫(kù) 隨著訪(fǎng)問(wèn)量上升, 網(wǎng)站的數(shù)據(jù)庫(kù)性能...
    奮斗的老王閱讀 3,137評(píng)論 4 47

友情鏈接更多精彩內(nèi)容