Description:
A document with a field like Year provides error and cannot be used in filters, fields selection or sort.
The error is with python and js in the Shell.
How to repeat:
Py db.mybooks.find()
[
{
"Authors": [
"David Stokes"
],
"ISBN-13": "9781260135442",
"Language": "en",
"Publisher": "McGraw-Hill Education",
"Title": "MySQL And JSON: A Practical Programming Guide",
"Year": "2018",
"_id": "00005bb732b60000000000000024"
},
{
"Authors": [
"Charles Bell"
],
"ISBN-13": "9781484227244",
"Language": "en",
"Publisher": "Apress",
"Title": "Introducing The MySQL 8 Document Store",
"Year": "2018",
"_id": "00005bb732b60000000000000027"
},
{
"Authors": [
"Jesper Wisborg Krogh"
],
"ISBN-13": "9781484236932",
"Language": "en",
"Publisher": "Apress",
"Title": "MySQL Connector/Python Revealed",
"Year": "2018",
"_id": "00005bb732b60000000000000028"
},
{
"Authors": [
"Charles Bell"
],
"ISBN-13": "9781484238844",
"Language": "en",
"Publisher": "Apress",
"Title": "Introducing InnoDB Cluster",
"Year": "2018",
"_id": "00005bb732b60000000000000029"
},
{
"Authors": [
{
"name": "Jesper Wisborg Krogh"
},
{
"name": "Mikiya Okuno"
}
],
"ISBN-13": "9781484229811",
"Language": "en",
"Title": "Pro MySQL NDB Cluster",
"Year": "2018",
"_id": "00005bb732b6000000000000002d",
"publisher": "Apress"
}
]
Py db.mybooks.find().fields('Title','Year').sort('Year').limit(1)
Traceback (most recent call last):
File "<string>", line 1, in <module>
SystemError: RuntimeError: CollectionFind.fields: Expected token at position 1 but no tokens left.
Suggested fix:
Workaround using backticks:
Py db.mybooks.find().fields('Title','`Year`').sort('`Year`').limit(1)
[
{
"Title": "Understanding MySQL Internals",
"`Year`": "2007"
}
]
1 document in set (0.0006 sec
But it should work without this hack.