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") }
[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") }
相关文章推荐
- 【淘梦网络】thinkphp5根据主键删除数据库和添加数据的完整代码!
- php实例根据ID删除mysql表中的数据
- python操作mongodb根据_id查询数据的实现方法
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- 数据库表初始化,删除所有数据后主键ID从1开始
- mongodb根据_id删除
- python操作mongodb根据_id查询数据的实现方法
- 关系型数据库与mongodb 数据同步时主键ID的使用
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- 根据id删除数据,重新绑定数据源
- sqlserver 根据一个泛型id查询数据,批量删除数据
- hibernateTemplate的根据id来删除数据
- JS中根据id删除一行数据
- 数据库修改之更新员工表,根据ID删除Mapping表数据,再插入数据
- 数据库删除之根据ID删除父表中的数据和根据ID删除子表数据
- solr自定义主键id后根据主键删除索引信息。
- [置顶] Oracle 删除根据id 删除重复数据
- oracle 违反主键id错误,查看表中是否有重复的ID列的值,并删除重复数据
- sql 根据多个ID删除表中多行数据
- Mongodb 实现数据自动在后台删除--根据一个截止时间