我的数据库中有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](