通过上面的客户端连接结果可以看到,默认情况下会连接到 test这个数据库 。 如果我们想要知道mongodb现在有多少数据库,可以通过命令
> show dbsadmin (empty)foobar 0.203GBlocal 0.078GBpiedra 0.078GB>如果想要知道当前是哪个数据库,使用 db
命令
> dbtest如果想要切换到其他的数据库, 使用命令 user <your-dbname>
> use piedraswitched to db piedra显示当前数据库有哪一些集合show collections
> show collectionssystem.indexesusers当然,如果你第一次使用运行 show collection
,结果是空的,但是当你往集合里面插入数据后,就可以看到集合以及对应的数据库都会被创建。
> show dbsadmin (empty)foobar 0.203GBlocal 0.078GBpiedra 0.078GB> use demoswitched to db demo> show collections> db.users.insert({username:"linwenbin",pwd:"1234"})WriteResult({ "nInserted" : 1 })> db.users.find(){ "_id" : ObjectId("55717e7ae25992bae59cca65"), "username" : "linwenbin", "pwd" : "1234" }>在上面的操作中,我们切换到demo数据库,并且创建了users这个集合,还往users集合插入一条数据。
mongodb中的集合和MySQL,Oracle中的table是一样的概念。
插入数据
在mongodb中,插入数据使用命令 db.collectionName.insert({data}) 或者 db.collectionName.save({data})这两个方法都可以正常工作。 对于 insert方法在上文中已经提到,这里演示save方法的使用。
> dbdemo> show collectionssystem.indexesusers>> db.users.save({username:"saveMethod",pwd:"123"}) WriteResult({ "nInserted" : 1 })需要注意的是 save 方法在没有指定 _id的时候,工作方式和insert是一样的,但是如果指定了 _id 那么如果集合中已经有对应的_id了,就会用新的文档覆盖掉旧的文档。修改数据
要修改数据,也有两种方式,一个是修改整个文档,一个是修改部分。首先先介绍修改整个文档的做法, 我们先把usres这个集合的数据都查询出来,方便和修改操作后的对比
> db.users.find(){ "_id" : ObjectId("55717e7ae25992bae59cca65"), "username" : "linwenbin", "pwd" : "1234" }{ "_id" : ObjectId("55717fd5e25992bae59cca66"), "username" : "saveMethod", "pwd" : "123" }>第一种方式: db.collectionName.update({criteria},{data}); 这个方法会替换整个文档。
> db.users.update({username:"linwenbin"},{age:22})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.users.find({username:'linwenbin'})>可以发现,当我们修改完之后,再去查找username为’linwenbin’的数据就不存在了。
第二种方式: db.collectionName.update({criteria},{set:{newData}}); 现在我们对另一条数据进行set的修改操作
> db.users.update({username:"saveMethod"},{$set:{pwd:"9999"}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.users.find(){ "_id" : ObjectId("55717e7ae25992bae59cca65"), "age" : 22 }{ "_id" : ObjectId("55717fd5e25992bae59cca66"), "username" : "saveMethod", "pwd" : "9999" }>可以观察到,username为 saveMethod的那条数据的pwd已经被成功修改为 ‘9999’了,而且其他属性并没有被新数据覆盖掉。
查询数据
mongodb的查询方法就是find方法了,上文中已经提到多次, db.collectionName.find({criteria})
> db.users.find({age:22}){ "_id" : ObjectId("55717e7ae25992bae59cca65"), "age" : 22 }>如果都不指定find方法的条件,那么就是查询所有的数据了。我们还可以通过指定查询结果显示哪一些字段,这个请查阅mongodb的manual手册。删除数据
如果要删除某一个集合,可以通过 db.collectionName.drop(); 来删除。如果删除某一个集合内的数据,则通过 db.collectionName.remove({criteria});我们在上面操作的基础上,将 {age:22} 这条数据删除
> db.users.find(){ "_id" : ObjectId("55717e7ae25992bae59cca65"), "age" : 22 }{ "_id" : ObjectId("55717fd5e25992bae59cca66"), "username" : "saveMethod", "pwd" : "9999" }> db.users.remove({age:22})WriteResult({ "nRemoved" : 1 })> db.users.find(){ "_id" : ObjectId("55717fd5e25992bae59cca66"), "username" : "saveMethod", "pwd" : "9999" }>MongoDB索引
什么是索引?
索引是创建在表格之上的,对用户来说不可见。索引加快了查找的速度,但是会增加额外的空间,所以创建所以要谨慎,mongodb也对每一个Collection的索引个数有限制。
简单的说: 索引就是提供了一个能够更快的定位到数据的方法
mongodb怎么查询索引
要查看当前集合有哪些索引,可以通过命令 db.collectionName.getIndexes();
> db.users.getIndexes()[ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "demo.users" }]>key为 _id 为默认的主键索引,创建集合的时候mongodb自动为我们创建。
mongodb怎么创建索引
那如果此时我们想要对users这个集合的 username创建索引,应该怎么操作?
> db.users.ensureIndex({username:1}){ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1}这样就表示我们创建索引成功了,在来看看usres集合的索引。
> db.users.getIndexes()[ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "demo.users" }, { "v" : 1, "key" : { "username" : 1 }, "name" : "username_1", "ns" : "demo.users" }]>我们发现,多了一个key为 username的索引。 其中创建索引 db.users.ensuerIndex({username:1}) 中的1 表示正序索引, -1表示逆序索引
mongodb怎么删除索引
要删除索引通过 db.collectionName.dropIndex(column) 来删除
> db.users.dropIndex({username:1}){ "nIndexesWas" : 2, "ok" : 1 }> db.users.getIndexes()[ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "demo.users" }]>至此,简单的索引操作也记录完成了。
新闻热点
疑难解答