今天有朋友在说,同一个库,有两个相同的表名,还有截图
乍一看,好像真的有两个相同名的集合。这种情况很可能是有空格。经过确认确实是有空格。下面我们来验证一下:
rs01:PRIMARY> db.getCollection('t_user').insert({x:1});
WriteResult({ "nInserted" : 1 })
rs01:PRIMARY> db.getCollection('t_user ').insert({x:1});
WriteResult({ "nInserted" : 1 })
rs01:PRIMARY> show tables;
t_user
t_user
rs01:PRIMARY> db.getCollectionNames()
[ "t_user", "t_user " ]
如果集合很多的时候,有什么办法可以快速查看哪些集合名称有空格哪些集合名有特殊字符呢
rs01:PRIMARY> show tables
t_user
t_user
t_user 2
t_user!
t_user"
t_user#
t_user%
t_user&
t_user'
t_user(
t_user)
t_user*
t_user,
t_user.
t_user/
t_user:
t_user;
t_user<
t_user>
t_user?
t_user@
t_user[
t_user\
t_user]
t_user^
t_user{
t_user|
t_user}
t_user~
办法还是有的
rs01:PRIMARY> db.getCollectionNames().forEach(function(item){var a=item.match('[ ~!@#\$%^&*(){|};:"\'<,>.,?/\\\\[\\]]');if(a !=null){print("集合","'"+item+"'","不符合命名规范")} } )
集合 't_user ' 不符合命名规范
集合 't_user 2' 不符合命名规范
集合 't_user!' 不符合命名规范
集合 't_user"' 不符合命名规范
集合 't_user#' 不符合命名规范
集合 't_user%' 不符合命名规范
集合 't_user&' 不符合命名规范
集合 't_user'' 不符合命名规范
集合 't_user(' 不符合命名规范
集合 't_user)' 不符合命名规范
集合 't_user*' 不符合命名规范
集合 't_user,' 不符合命名规范
集合 't_user.' 不符合命名规范
集合 't_user/' 不符合命名规范
集合 't_user:' 不符合命名规范
集合 't_user;' 不符合命名规范
集合 't_user<' 不符合命名规范
集合 't_user>' 不符合命名规范
集合 't_user?' 不符合命名规范
集合 't_user@' 不符合命名规范
集合 't_user[' 不符合命名规范
集合 't_user\' 不符合命名规范
集合 't_user]' 不符合命名规范
集合 't_user^' 不符合命名规范
集合 't_user{' 不符合命名规范
集合 't_user|' 不符合命名规范
集合 't_user}' 不符合命名规范
集合 't_user~' 不符合命名规范