В моей базе данных есть MarkLogi c 9.
В моей базе данных созданы следующие документы:
test1.json
{
"users": [
{
"userId": "A",
"value": 0
}
]
}
test2.json
{
"users": [
{
"userId": "A",
"value": "0"
}
]
}
test3.json
{
"users": [
{
"value": 0,
"userId": "A"
}
]
}
test4.json
{
"users": [
{
"value": "0",
"userId": "A"
}
]
}
Я запустил следующие коды и записал результаты :
cts.uris(“”, null, cts.jsonPropertyScopeQuery(
"users",
cts.andQuery(
[
cts.jsonPropertyValueQuery('userId', "A"),
cts.jsonPropertyValueQuery('value', "0"),
]
)
))
Результат: test2. json, test4. json
cts.uris(“”, null, cts.jsonPropertyScopeQuery(
"users",
cts.andQuery(
[
cts.jsonPropertyValueQuery('userId', "A"),
cts.jsonPropertyValueQuery('value', 0),
]
)
))
Результат: test3. json
Мне было интересно, почему test1 . json не возвращался во втором запросе, в то время как test3. json делал. Они оба имели одинаковые значения для полей, но в разном порядке. Порядок полей различается в test2. json и test4. json, однако запрос вернул оба документа. Единственное различие между двумя парами, о котором я могу подумать, состоит в том, что для поля «значение», целого числа и строки существует 2 типа данных.
Как бы я go решил эту проблему?