Details
-
Bug
-
Resolution: Fixed
-
Major - P3
-
0.2.2
-
None
-
Needed
-
-
Iteration Lime
Description
`NumberLong` is created incorrectly with unsafe integers (> Number.MAX_SAFE_INTEGER)
The same happens when retrieving a NumberLong which is an unsafe integer, even if was correctly inserted in the database.
The old shell correctly handles it:
New shell:
> db.coll3.insertOne({x: NumberLong("345678654321234561")}) |
{ acknowledged: 1, insertedId: ObjectId("5f564a3c4f53d376a739e656") } |
> db.coll3.find()
|
[
|
{
|
_id: ObjectId("5f564a3c4f53d376a739e656"), |
x: NumberLong(345678654321234560) |
}
|
]
|
Old shell:
> db.coll5.insertOne({int64: NumberLong("345678654321234561")}) |
{
|
"acknowledged" : true, |
"insertedId" : ObjectId("5f564a9284f79fe8de9e7e40") |
}
|
> db.coll5.find()
|
{ "_id" : ObjectId("5f564a9284f79fe8de9e7e40"), "int64" : NumberLong("345678654321234561") } |
NOTE: looks like is enough to use fromString (converting it before) instead of fromNumber here: https://github.com/mongodb-js/mongosh/blob/e4fb6ea6eae5f5d196038c68301af5bffea57070/packages/shell-api/src/shell-bson.ts#L122
Attachments
Issue Links
- related to
-
COMPASS-4355 $match stage in Aggregation Pipeline builder does not find int64 fields
-
- Closed
-