首页 > 解决方案 > 如果父对象为空,则 Cosmos DB 查询失败

问题描述

我正在将 Mongodb 转换为 Cosmos DB,而无需更改任何代码。我使用 spring-boot-starter-data-mongo api 并org.springframework.data.mongodb.core.query.Query仅选择文档中的几个字段而不是所有字段。

_id,address.primary.email,address.primary.secondary从中选择emp1工作正常,如果我使用相同的查询 select emp2,它会失败,因为emp2没有辅助地址。

如何解决这个问题?

查询:{“_id”:{“$in”:[“Emp2”]}},字段:{“_id”:1,“address.primary.email”:1,“address.secondary.email”:1} ,, 种类: { }

mongoTemplate.find(query,EmployeeCol.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)

标签: mongodbazure-cosmosdbspring-data-mongodbazure-cosmosdb-mongoapi

解决方案


推荐阅读