javascriptmongodbmeteor

Mongo client can't access collections prefixed with an underscore


I named a collection with an underscore in Mongo, and can't access it from the shell:

meteor:PRIMARY> show collections
_assignments
chatmessages
(... other stuff)

Trying to run any function on the first collection results in an error:

meteor:PRIMARY> db._assignments.find()
Thu Jun 19 10:53:28.450 TypeError: Cannot call method 'find' of undefined

However, other collections work fine:

meteor:PRIMARY> db.chatmessages.find()
{ "room" : "j5oau9DJ6GNpT9nR8", "userId" : "at9Kt8NNL4aeof6LE", "text" : "@nomad943 can you take a look at event #1?", "timestamp" : 1391806611977, "_id" : "26GbXa6c4B65FYRxC" }
{ "room" : "T7JfjBhri48bNHAfQ", "userId" : "B82LxmPBZWDnN4N2p", "text" : "Thinking #60 should be deleted, it's a duplicate of #36 and the region is wrong for the province", "timestamp" : ISODate("2014-06-18T18:57:56.480Z"), "_id" : "29pKqPhi4hgxCb2Ky" }

What's going on here?


Solution

  • I don't see the problem other than the shell cannot address this with it's default helper syntax. You can still access collections named like this in the shell:

    db.createCollection("_assignments")
    { "ok" : 1 }
    db.getCollection("_assignments").find()
    db.getCollection("_assignments").insert({ "a": 1 })
    WriteResult({ "nInserted" : 1 })
    db.getCollection("_assignments").find({ "a": 1 })
    { "_id" : ObjectId("53a36a4047234c4e9bb4feac"), "a" : 1 }