时间:2021-07-01 10:21:17 帮助过:11人阅读
数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串。
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
- ><span style="color: #000000;"> use test
- switched to db test
- </span>><span style="color: #000000;"> show dbs
- admin </span>0<span style="color: #000000;">.000GB
- config </span>0<span style="color: #000000;">.000GB
- local </span>0.000GB
刚刚创建的test并不显示,需要插入数据才可以
- > db.test.insert({"name":"天王盖地虎"<span style="color: #000000;">})
- WriteResult({ </span>"nInserted" : 1<span style="color: #000000;"> })
- </span>><span style="color: #000000;"> show dbs
- admin </span>0<span style="color: #000000;">.000GB
- config </span>0<span style="color: #000000;">.000GB
- local </span>0<span style="color: #000000;">.000GB
- test </span>0.000GB
> show dbs -- 查看数据库列表
> use admin --创建admin数据库,如果存在admin数据库则使用admin数据库
> db ---显示当前使用的数据库名称
> db.getName() ---显示当前使用的数据库名称
> db.dropDatabase() --删当前使用的数据库
> db.repairDatabase() --修复当前数据库
> db.version() --当前数据库版本
> db.getMongo() --查看当前数据库的链接机器地址
> db.stats() 显示当前数据库状态,包含数据库名称,集合个数,当前数据库大小 ...
> db.getCollectionNames() --查看数据库中有那些个集合(表)
> show collections --查看数据库中有那些个集合(表)
> db.person.drop() --删除当前集合(表)person
- ><span style="color: #000000;"> db.getName()
- </span><span style="color: #0000ff;">long</span>
- ><span style="color: #000000;"> db.getMongo()
- connection to </span>127.0.0.1:27017
- ><span style="color: #000000;"> db.stats()
- {
- </span>"db" : "long"<span style="color: #000000;">,
- </span>"collections" : 2<span style="color: #000000;">,
- </span>"views" : 0<span style="color: #000000;">,
- </span>"objects" : 102<span style="color: #000000;">,
- </span>"avgObjSize" : 51.705882352941174<span style="color: #000000;">,
- </span>"dataSize" : 5274<span style="color: #000000;">,
- </span>"storageSize" : 49152<span style="color: #000000;">,
- </span>"numExtents" : 0<span style="color: #000000;">,
- </span>"indexes" : 2<span style="color: #000000;">,
- </span>"indexSize" : 49152<span style="color: #000000;">,
- </span>"fsUsedSize" : 8530673664<span style="color: #000000;">,
- </span>"fsTotalSize" : 19945680896<span style="color: #000000;">,
- </span>"ok" : 1<span style="color: #000000;">
- }
- </span>><span style="color: #000000;"> db.getCollectionNames()
- [ </span>"col", "mycol"<span style="color: #000000;"> ]
- </span>><span style="color: #000000;"> db.version()
- </span>4.1.6-385-g671f529
删除数据库
db.dropDatabase()
- > use <span style="color: #0000ff;">long</span><span style="color: #000000;">
- switched to db </span><span style="color: #0000ff;">long</span>
- ><span style="color: #000000;"> show dbs
- admin </span>0<span style="color: #000000;">.000GB
- config </span>0<span style="color: #000000;">.000GB
- local </span>0<span style="color: #000000;">.000GB
- </span>> db.<span style="color: #0000ff;">long</span>.insert({"name":"Hello"<span style="color: #000000;">})
- WriteResult({ </span>"nInserted" : 1<span style="color: #000000;"> })
- </span>><span style="color: #000000;"> show dbs
- admin </span>0<span style="color: #000000;">.000GB
- config </span>0<span style="color: #000000;">.000GB
- local </span>0<span style="color: #000000;">.000GB
- </span><span style="color: #0000ff;">long</span> 0<span style="color: #000000;">.000GB
- </span>><span style="color: #000000;"> db.dropDatabase()
- { </span>"dropped" : "long", "ok" : 1<span style="color: #000000;"> }
- </span>><span style="color: #000000;"> show dbs
- admin </span>0<span style="color: #000000;">.000GB
- config </span>0<span style="color: #000000;">.000GB
- local </span>0.000GB
创建集合
语法:db.createCollection(name, options)
参数说明:
options 可以是如下参数:
- ><span style="color: #000000;"> show collections
- </span><span style="color: #0000ff;">long</span>
- > db.createCollection("mycol", { capped : <span style="color: #0000ff;">true</span>, autoIndexId : <span style="color: #0000ff;">true</span><span style="color: #000000;">, size :
- ... </span>6142800, max : 10000<span style="color: #000000;"> } )
- {
- </span>"note" : "the autoIndexId option is deprecated and will be removed in a future release"<span style="color: #000000;">,
- </span>"ok" : 1<span style="color: #000000;">
- }
- </span>><span style="color: #000000;"> show collections
- </span><span style="color: #0000ff;">long</span><span style="color: #000000;">
- mycol
- </span>><span style="color: #000000;"> db.mycol.count();
- </span>0
查看已有集合
show collections
- <span style="color: #008000;">//</span><span style="color: #008000;"> 2019/6/14 11:29:18
- </span><span style="color: #008000;">//</span><span style="color: #008000;"> Command #1:
- </span><span style="color: #008000;">//</span><span style="color: #008000;"> show collections;
- </span><span style="color: #008000;">//</span><span style="color: #008000;"> Execution time: 0.0s
- </span><span style="color: #008000;">//</span><span style="color: #008000;"> Result:</span>
- <span style="color: #000000;">age_totals
- col
- collection</span>
查看集合大小
- db.col.count();
查看集合所有数据
- db.col.find();
删除集合
首先创建集合,然后再删掉,然后再查看所有集合
- <span style="color: #000000;">show collections
- db.createCollection(</span>"weapon",{capped:<span style="color: #0000ff;">true</span>,autoIndexId:<span style="color: #0000ff;">true</span>,size:10,max:100<span style="color: #000000;">});
- db.weapon.drop();
- show collections;</span>
插入文档(向集合插入数据)
- db.weapon.insert({"name":"黑切","type":"攻击"<span style="color: #000000;">});
- db.weapon.find();</span>
- db.weapon.insertOne({"attack":"200"});
- <span style="color: #008000;">//</span><span style="color: #008000;">向指定集合中插入多条文档数据,重复插入</span>
- db.weapon.insertMany([{"name":"电刀"},{"name":"红帽子"}]);
- <span>db.collection.update(
- <query><span>,
- <update><span>,
- {
- upsert: <boolean><span>,
- multi: <boolean><span>,
- writeConcern: <document><span>
- }
- )</span></span></span></span></span></span>
参数说明:
这里说明下,如果文档集合有属性是空,可用null查询,如:
- db.weapon.find({"name":<span style="color: #0000ff;">null</span>});
- db.weapon.update({"name":<span style="color: #0000ff;">null</span>},{$set:{"name":"虚无之刃"}});
$unset:移除集合中的键值对。
- db.weapon.update({"name":"虚无之刃"},{$unset:{"attack":""}});
Save:方法通过传入的文档来替换已有文档
- db.weapon.save({ "_id" : ObjectId("5d03352d4cb87ff7d914c5f6"), "name" : "虚无之刃","type":"暴击" });
注意:MongoDB 不支持 ACID 所以得自己处理。防止并发访问导致问题的思路是:
保持数据不重复其他的方法:
(1)使用符合索引唯一标识:db.collection.ensureIndex( { user: 1, title: 1, Bank: 1 }, {unique:true} )
- db.weapon.ensureIndex({"name":1},{unique:<span style="color: #0000ff;">true</span>});
再次插入结果:
(2)db.collection.update(<query>,<update>,{upset:true});
- db.weapon.update({"name":"冰霜之槌"},{$set:{"type":"攻击"}});
- <span><span class="fctbNone">WriteResult({ </span><span class="fctbStyle2">"nMatched"</span><span class="fctbNone"> : </span><span class="fctbStyle3">0</span><span class="fctbNone">, </span><span class="fctbStyle2">"nUpserted"</span><span class="fctbNone"> : </span><span class="fctbStyle3">0</span><span class="fctbNone">, </span><span class="fctbStyle2">"nModified"</span><span class="fctbNone"> : </span><span class="fctbStyle3">0</span><span class="fctbNone"> })</span></span>
- db.weapon.update({"name":"冰霜之槌"},{$set:{"type":"攻击"}},{upsert:<span style="color: #0000ff;">true</span>});
- <span><span class="fctbNone">WriteResult({ </span><span class="fctbStyle2">"nMatched"</span><span class="fctbNone"> : </span><span class="fctbStyle3">0</span><span class="fctbNone">, </span><span style="background-color: #ffcc00;"><span class="fctbStyle2">"nUpserted"</span><span class="fctbNone"> : </span><span class="fctbStyle3">1</span></span><span class="fctbNone">, </span><span class="fctbStyle2">"nModified"</span><span class="fctbNone"> : </span><span class="fctbStyle3">0</span><span class="fctbNone">, </span><span class="fctbStyle2">"_id"</span><span class="fctbNone"> : ObjectId(</span><span class="fctbStyle2">"5d0348d7d1fea6c6ed487c27"</span><span class="fctbNone">)})</span></span>
删除文档:
MongoDB remove()函数是用来移除集合中的数据。
在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
现在官方推荐使用 deleteOne() 和 deleteMany() 方法
- <span class="pln">db<span class="pun">.<span class="pln">collection<span class="pun">.<span class="pln">remove<span class="pun">(<span class="pln">
- <span class="str"><query><span class="pun">,<span class="pln">
- <span class="pun">{<span class="pln">
- justOne<span class="pun">:<span class="pln"> <span class="str"><boolean><span class="pun">,<span class="pln">
- writeConcern<span class="pun">:<span class="pln"> <span class="str"><document><span class="pln">
- <span class="pun">}<span class="pln">
- <span class="pun">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
参数说明:
- db.weapon.remove({"name":"电刀"});
WriteResult({ "nRemoved" : 1 })
注意:remove() 方法 并不会真正释放空间,删除collection内的数据不会释放磁盘空间;
- <span style="color: #008000;">//</span><span style="color: #008000;">-----查看磁盘空间使用情况</span>
- <span style="color: #000000;"> db.serverStatus().mem
- </span><span style="color: #008000;">//</span><span style="color: #008000;">释放空间</span>
- db.runCommand({compact: collection-name, force: <span style="color: #0000ff;">true</span> })
deleteOne() 和 deleteMany()
- db.weapon.deleteOne({"name":"电刀"});
查询文档
待续。。。mongodb 语法小结
标签:repair 抛出异常 通过 png collect pac date() mon ensure