Сбой запроса БД Cosmos, если родительский объект является нулевым - PullRequest
0 голосов
/ 23 марта 2020

Я конвертирую Mongodb в Cosmos DB без какого-либо изменения кода. Я использую spring-boot-starter-data-mon go api и org.springframework.data.mongodb.core.query.Query, чтобы выбрать только несколько полей в документе, а не все поля.

При выборе _id,address.primary.email,address.primary.secondary из emp1 он работает нормально, если я использую тот же запрос, выберите emp2, это не удастся, потому что emp2 не имеет дополнительного адреса.

Как решить эту проблему?

Запрос: {"_id": {"$ in": ["Emp2"]}}, Поля: {"_id": 1 , "address.primary.email": 1, "address.secondary.email": 1} ,, сортировка: {}

mongoTemplate.find (запрос, EmployeeColl.class);

[
  {
    "_id": "Emp1",
    "name": "Name1",
    "address": {
      "primary": {
        "email": "eamp1@gmail.com"
      },
      "secondary": {
        "email": "emp1sec@gmail.com"
      }
    }
  },
  {
    "_id": "Emp2",
    "name": "Name2",
    "address": {
      "primary": {
        "email": "emp2@gmail.com"
      }
    }
  }
]

Exception:
UncategorizedMongoDbException: Query failed with error code 1 and error message

org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:132)
    at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2607)
    at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:2474)
...