关于数据类型和字段顺序的cts.jsonPropertyScopeQuery和cts.jsonAttributeValu



我的数据库中有MarkLogic9。

我在数据库中创建了以下文档:

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中字段的顺序不同,但是查询返回了这两个文档。我能想到的这两个对之间的唯一区别是字段"value"有两种数据类型,integer和string。

我该如何解决这个问题?

https://docs.marklogic.com/cts.jsonPropertyValueQuery将要匹配的值显示为数组。

如果你想在数据中保留变体,也许你可以在查询端尝试一些东西,比如cts.jsonPropertyValueQuery('value',["0",0](

最新更新