Попытка написать запрос, который вернул бы Tesla Modal 3, купленные в 2019-12-10 (без учета метки времени), но получить другие результаты при выполнении поиска по шаблону в QConsole против Java Api. К вашему сведению, включен конечный поиск подстановочных знаков и конечные индексы позиций слов подстановки.
С учетом приведенных ниже данных.
[
{
"com.dealership.luckyAuto.carTransactions": {
"carName": "Tesla",
"carModal": "3",
"buyer": "Bob",
"purchasedDate": "2017-04-26T22:00:00.000Z"
}
},
{
"com.dealership.luckyAuto.carTransactions": {
"carName": "Tesla",
"carModal": "X",
"buyer": "Ted",
"purchasedDate": "2015-04-26T03:00:00.000Z"
}
},
{
"com.dealership.luckyAuto.carTransactions": {
"carName": "Tesla",
"carModal": "Y",
"buyer": "Carol",
"purchasedDate": "2016-04-26T10:00:00.000Z"
}
},
{
"com.dealership.luckyAuto.carTransactions": {
"carName": "Audi",
"carModal": "Q3",
"buyer": "Alice",
"purchasedDate": "2015-04-26T00:00:00.000Z"
}
},
{
"com.dealership.luckyAuto.carTransactions": {
"carName": "Audi",
"carModal": "Q4",
"buyer": "Lori",
"purchasedDate": "2016-04-26T00:00:00.000Z"
}
},
{
"com.dealership.luckyAuto.carTransactions": {
"carName": "Audi",
"carModal": "Q5",
"buyer": "Alax",
"purchasedDate": "2018-04-26T00:00:00.000Z"
}
}
]
Когда в QConsole выполняется запрос ниже, результат равен 0, (Ожидается)
cts.search(
cts.andQuery([
cts.collectionQuery("com.dealership.luckyAuto.carTransactions"),
cts.jsonPropertyValueQuery("carName", "Tesla"),
cts.jsonPropertyValueQuery("carModal", "3"),
cts.jsonPropertyValueQuery("purchasedDate", "2019-12-10T*", ("wildcarded"))
]
)
)
Но при выполнении ниже struturedQuery результатом является (Соответствует только для carName и carModal. Подстановочные знаки приобрелиДата игнорируется)
Tesla 3 Bob 2015-03-23T00:00:00.000+0000
Tesla 3 Jeff 2017-03-21T00:00:00.000+0000
StruturedQuery:
StructuredQueryBuilder().run {
and(
value(jsonProperty("carName"), "Tesla"),
value(jsonProperty("carModal"), "3"),
value(
jsonProperty("purchasedDate"),
StructuredQueryBuilder.FragmentScope.DOCUMENTS,
arrayOf("wildcarded"),
1.0,
"2019-12-10T*"
)
)}
Сериализация запроса:
<query xmlns="http://marklogic.com/appservices/search">
<and-query>
<value-query type="string">
<json-property>carName</json-property>
<text>Tesla</text>
</value-query>
<value-query type="string">
<json-property>carModal</json-property>
<text>3</text>
</value-query>
<value-query type="string">
<json-property>purchasedDate</json-property>
<fragment-scope>documents</fragment-scope>
<text>2019-12-10T*</text>
<term-option>wildcarded</term-option>
<weight>1.0</weight>
</value-query>
</and-query>
</query>