mongodb

通过上面的客户端连接结果可以看到,默认情况下会连接到 test这个数据库 。 如果我们想要知道mongodb现在有多少数据库,可以通过命令

> show dbs
admin   (empty)
foobar  0.203GB
local   0.078GB
piedra  0.078GB
>

如果想要知道当前是哪个数据库,使用 db 命令

> db
test

如果想要切换到其他的数据库, 使用命令 user <your-dbname>

> use piedra
switched to db piedra

显示当前数据库有哪一些集合show collections

> show collections
system.indexes
users

当然,如果你第一次使用运行 show collection ,结果是空的,但是当你往集合里面插入数据后,就可以看到集合以及对应的数据库都会被创建。

> show dbs
admin   (empty)
foobar  0.203GB
local   0.078GB
piedra  0.078GB
> use demo
switched 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方法的使用。

> db
demo
> show collections
system.indexes
users
>
> 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"
        }
]
>

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值