带有cts.jsonPropertyScopeQuery和cts.jsonPropertyValueQuery以及数据类型和字段顺序的问题

问题描述 投票:0回答:1

我的数据库上有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种数据类型。

我将如何解决此问题?

json marklogic cts
1个回答
0
投票

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

如果要在数据中保留变体,也许可以在查询端尝试类似cts.jsonPropertyValueQuery('value',[“ 0”,0])] >>

© www.soinside.com 2019 - 2024. All rights reserved.