您的位置:首页 > 数据库 > Mongodb

mongodb 根据主键id 删除数据

2012-03-02 15:28 134 查看
命令行链接

[itsupport@uk-log ~]$ mongo

MongoDB shell version: 1.8.1

connecting to: test 默认是test db

>

> use logs //切换db 为logs

switched to db logs

>

由于mongodb 开启了验证授权 不经过验证是无法执行的,比如我们查一下 db的状态

> db.stats()

{

"assertion" : "unauthorized db:logs lock type:-1 client:127.0.0.1",

"assertionCode" : 10057,

"errmsg" : "db assertion failure",

"ok" : 0

}

>

系统提示当前默认的帐号没有对此db的操作权限。所以接下来我们要授权和切换mongodb的登录帐号,授权和登录是同一时间完成的,命令如下

> db.auth('hyuser','hylog');

1 //此处系统返回状态为1.说明授权通过 并成功切换成用户 hyuser。 否则为0

>

现在我们再查询db状态 是ok的。如下。

> db.stats()

{

"db" : "logs",

"collections" : 5,

"objects" : 129858100,

"avgObjSize" : 231.78011497164982,

"dataSize" : 30098525348,

"storageSize" : 33372166496,

"numExtents" : 50,

"indexes" : 12,

"indexSize" : 75387239696,

"fileSize" : 133012914176,

"ok" : 1

}

>

接下来要做的就是删除那些脏数据,因为那些脏数据无明显特征和定位,还好开发初期在页面上对每条数据都取出了 唯一的id hidden在web页面,通过查看源码我可以清楚的找到这条数据的唯一标识。

删除 id为4f29e4860b2e2ecb9910e304 的数据,操作

> db.logs.remove({'_id':ObjectId('4f29e4860b2e2ecb9910e304')})

>

成功删除。

不少刚接触mongodb的朋友 在删除的时候会用到这种错误的方式删除

> db.logs.remove(‘_id’,'dfsdfsdfsdfsdfsdfsdfsdfsd');

这中方式是无法删除的,因为 mongodb的唯一id 不是作为一个字符串来存储的。,这个值通常是一个BSON对象id,因此,这个id对于集合中的每个成员都是唯一的,如果用户插入一个document没有提供一个id,数据库将自动生成一个id,并存储在_id字段。

一个BSON ObjectID是由12个字节组成:4字节时间+3字节机器id+2字节进程id+3字节的数字

{ "_id" : ObjectId("4c691e72ed2a47b462dfa806") }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: