首页 > 学院 > 开发设计 > 正文

mongodb

2019-11-08 20:47:13
字体:
来源:转载
供稿:网友

通过上面的客户端连接结果可以看到,默认情况下会连接到 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中的集合和MySQLOracle中的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"        }]>

至此,简单的索引操作也记录完成了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表