Couch DB Mango запрос, чтобы сравнить 2 поля из той же структуры
У меня есть 2 структуры с разными значениями "_id". Я хочу получить только структуру, в которой "costCenterFrom" не равен "costCenterTo"
{
"_id": "TRAN001",
"_rev": "3-945670849a142da8d57a79f7c13040dd",
"actionCode": "Transfer",
"bankID": "1000003",
"costCenterFrom": "30000004",
"costCenterTo": "30000005",
"effectiveDateOfAction": "30-08-2018",
"employeeName": "Kumar,Vinoth",
"transferReportID": "TRAN001",
"~version": "22:0"
}
{
"_id": "TRAN002",
"_rev": "2-1983dcdedc144d75b14c1ef73771fc42",
"actionCode": "Transfer",
"bankID": "1000004",
"costCenterFrom": "30000002",
"costCenterTo": "30000002",
"effectiveDateOfAction": "31-08-2018",
"employeeName": "Kumar",
"transferReportID": "TRAN002",
"~version": "12:0"
}
Пожалуйста, найдите запрос, который я пытался
queryStringTrans := fmt.Sprintf("{\"selector\":{\"transferReportID\":
{\"$ne\":\"%s\"}}}", "null")
queryResultsTrans, err := getQueryResultForQueryString(stub,
queryStringTrans)
Приведенный выше запрос (queryResultsTrans) выдаст всю запись, имеющую поле "TransferReportID".
var costcenterFrom string
var costcenterTo string
var resultsdummy []KeyRecordTransfer
err = json.Unmarshal([]byte(queryResultsTrans), &resultsdummy)
for _, trasnresult := range resultsdummy {
fmt.Println(" resultsdummy Record : ", trasnresult)
costcenterFrom = trasnresult.Record.CostCenterFrom
costcenterTo = trasnresult.Record.CostCenterTo
if (costcenterFrom != costcenterTo) {
fmt.Println("costcenterFrom && costCenterTo : ", costcenterFrom,
costcenterTo)
}
//var costcenterFrom = resultsdummy[0].Record.CostCenterFrom
//var costcenterTo = resultsdummy[0].Record.CostCenterTo
}
//query to get the Transfer Reports
Приведенный ниже запрос, который я пытался сравнить поля "costCenterFrom" и "costCenterTo"
queryString := fmt.Sprintf("{\"selector\":{\"$and\":[{\"transferReportID\":
{\"$ne\":\"%s\"}},{\"%s\":{\"$ne\":\"%s\"}},{\"effectiveDateOfAction\":
{\"$gt\":\"%s\"}}]}}","null",costcenterFrom,costcenterTo,"30-07-2018")
queryResults, err := getQueryResultForQueryString(stub, queryString)
Я не получаю ожидаемого результата. Не могли бы вы помочь мне в получении запроса для сравнения полей внутри одной структуры?
Мой необработанный запрос:
{
"selector": {
"$and": [
{
"transferReportID": {
"$ne": null
}
},
{
"costcenterFrom": {
"$ne": "costcenterTo"
}
},
{
"effectiveDateOfAction": {
"$gt": "30-07-2018"
}
}
]
}
}
1 ответ
Я попробовал ваш запрос, и у вас есть некоторые опечатки.
Итак, в вашем запросе у вас есть пропавший случай верблюда: стоимость c
enterFrom Из моих тестов $ne, кажется, проверяет, существует ли поле.
Другой комментарий, вы не можете сравнивать другие поля объекта. Я вижу, что вы пытаетесь сравнить costCenterTo
собственность с costCenterFrom
но это не поддерживается манго в данный момент.