MongoDBのCollection名には`-`を入れない方が良さそう
はじめに
最近 MongoDB を使い始めて、下記エラーに遭遇して対応したので、その記録。
uncaught exception: ReferenceError: collection is not defined
試したこと
-
がないときー ↓
MongoDB では Collection(RDB のテーブルみたいなやつ)にアクセスするとき、こんな感じでアクセスできる。
> db.createCollection('hoge');
{ "ok" : 1 }
> show collections
hoge
> db.hoge.count()
0
-
があるときー ↑
hoge-collection
みたいに、-
が入ってた場合、こんな感じでエラーが出る。
> db.createCollection("hoge-collection")
{ "ok" : 1 }
> show collections
hoge-collection
> db.hoge-collection.find()
uncaught exception: ReferenceError: collection is not defined :
@(shell):1:1
何でかよくわからず、検索してたら、解決方法見つけた。
I get the following ReferenceError... please help - MongoDB University / M001: MongoDB Basics - MongoDB Developer Community Forums
Subtraction Operator
として扱われちゃうみたいなこと書かれてた(since the MongoDB Shell is an interactive JavaScript interface, it treats the - as the Subtraction Operator.
)。マジかよ。スペースないのに。
なので、getCollection()
か[""]
を使う必要がある。
> db.getCollection("hoge-collection").count()
0
> db["hoge-collection"].count()
0
Subtraction Operator
って本当かなと思って、引き算してみた。確かに、スペースなくても引き算してる。
> a=3
3
> b=1
1
> a-b
2
回答してくれてる人らが言うように、-
使わないのが無難そう。
In general, to avoid such error you can use the underscore ("_") within the collection name, instead of the hyphen
おわりに
エラーメッセージだけ読んでても、よくわからんかった。
-
使わない方が無難ってのは、MongoDB 使ってる人的に一般的なのかもやけど、使い始めなので、軽くハマった。
もうちょい、MongoDB の日本語情報増えてくると良いなぁ。
Discussion