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 но это не поддерживается манго в данный момент.

Другие вопросы по тегам