我的数据库上有MarkLogic 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种数据类型。
我将如何解决此问题?
[https://docs.marklogic.com/cts.jsonPropertyValueQuery显示要匹配为数组的值。
如果要在数据中保留变体,也许可以在查询端尝试类似cts.jsonPropertyValueQuery('value',[“ 0”,0])] >>