2

I am using MongoDB Enterprise, MongoDB shell version: 3.2.5

I have a db = mydb and a collections = ['events', 'events__2015-12-01', 'events__2015-11-01']

I have a python/pymongo script where I can connect to every document but in mongo shell I cannot to connect to the dated collections?

in other words

mongodb> use mydb 
switched to db mydb
mongodb> db.event
mydb/event
mongodb> db.event__2015-12-01
NaN
mongodb> db.event__2015-11-01
NaN
mongodb> show collections
event
event__2015-11-01
event__2015-12-01

why does this happen in the shell?

EDIT:

Note: On further inspection Mongo Documentations. Clearly states that collections with special characters can only be accessed via getCollection() method

Crazyshezy
  • 1,530
  • 6
  • 27
  • 45

2 Answers2

1

When you write db.event__2015-12-01, event__2015-12-01 is your collection object which is quite different from the elements in your collections array or list (Python).

To create a collection object from string, you need to use the getCollection() method in the shell and the get_collection() method in your Python script. You can use the [] operator as well.

styvane
  • 59,869
  • 19
  • 150
  • 156
0

You can use either of following syntaxes to access collections with hyphenated names:

db['event__2015-12-01']

OR

db.getCollection('event__2015-12-01')
Jagdeep Singh
  • 4,880
  • 2
  • 17
  • 22