[GODRIVER-1494] Map keys always use stringer function Created: 21/Feb/20 Updated: 28/Oct/23 Resolved: 13/Apr/20 |
|
| Status: | Closed |
| Project: | Go Driver |
| Component/s: | BSON |
| Affects Version/s: | 1.3.0 |
| Fix Version/s: | 1.4.0 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Anonymous User | Assignee: | Isabella Siu (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Backwards Compatibility: | Minor Change |
| Description |
|
When you insert a map into a collection the keys are always `fmt.Sprint`ed, and therefore always use the `String()` function if one exists on that type - this is not always ideal.
Please see the below example for a valid use case and further explanation of the current versus desired behaviour:
|
| Comments |
| Comment by Githook User [ 13/Apr/20 ] |
|
Author: {'name': 'iwysiu', 'email': 'isabella.siu@10gen.com', 'username': 'iwysiu'}Message: |
| Comment by Isabella Siu (Inactive) [ 07/Apr/20 ] |
|
As an update, the map key behavior is being changed to match encoding/json by default, instead of having the mgo behavior by default. While this does change the default behavior, the mgo behavior cannot be roundtripped. |
| Comment by Isabella Siu (Inactive) [ 25/Feb/20 ] |
|
This is going back into scheduled and will be done before the 1.4 release. |
| Comment by Isabella Siu (Inactive) [ 25/Feb/20 ] |
|
Hi anonymous.user, After investigating, we plan to add an option to the MapCodec to have it create keys the same way the encoding/json package does, which will include directly using string types as strings instead of using the Stringer interface. This option will not be turned on by default to avoid changing the default behavior. After it's done, we'll add an example of how to use this option to this ticket. |