Node.js Mongoose查询子文档属性

Node.js Mongoose查询子文档属性,node.js,mongodb,azure-cosmosdb,Node.js,Mongodb,Azure Cosmosdb,我试图通过WEB API公开此功能。在这段代码中设置它的方式是,有人执行一个GET-on URL,并以以下形式提供一个查询字符串: ?字段=值&另一个字段。子字段=值 但我似乎无法基于子文档属性进行查询。下面您将找到我的基本代码、我试图接收的记录以及我的两个测试用例 代码: 记录: { "_id": "5871d2e814946a941d8611fb", "resourceType": "testResource", "link": [], "communicat

我试图通过WEB API公开此功能。在这段代码中设置它的方式是,有人执行一个GET-on URL,并以以下形式提供一个查询字符串:

?字段=值&另一个字段。子字段=值

但我似乎无法基于子文档属性进行查询。下面您将找到我的基本代码、我试图接收的记录以及我的两个测试用例

代码:

记录:

{
    "_id": "5871d2e814946a941d8611fb",
    "resourceType": "testResource",
    "link": [],
    "communication": [],
    "animal": {
      "genderStatus": {
        "coding": []
      },
      "breed": {
        "coding": []
      },
      "species": {
        "coding": []
      }
    },
    "contact": [],
    "photo": [],
    "maritalStatus": {
      "coding": []
    },
    "address": [],
    "gender": "unknown",
    "telecom": [
      {
        "system": "phone",
        "value": "2019196553",
        "use": "home"
      }
    ],
    "name": {
      "suffix": [],
      "prefix": [],
      "given": [],
      "family": []
    },
    "identifier": [
      {
        "use": "official",
        "type": {
          "coding": {
            "system": "kylec laptop",
            "version": "0.01",
            "code": "UDI",
            "display": "Universal Device Identifier",
            "userSelected": false
          },
          "text": "test"
        },
        "system": "test system",
        "value": "test value",
        "assigner": {
          "reference": "test assigner reference"
        },
        "period": {
          "start": "1992-12-31T09:59:59+00:00"
        }
      }
    ]
}
成功查询:

GET http://{{LOCAL}}/api/user?resourceType=testResource
从MongoDB返回此模型

查询失败(未找到与查询匹配的文档):


不返回任何模型,结果为404。

您没有正确使用点表示法,因为您正在查找的属性位于数组中:

"telecom": [
  {
    "system": "phone",
    "value": "2019196553",
    "use": "home"
  }
]
查询数组内容通常需要对数组进行连接(对于DocumentDB查询),而不是简单的
find()

如果希望在此处使用点符号,则需要创建一个子文档,如:

"telecom": {
    "system": "phone",
    "value": "2019196553",
    "use": "home"
  }

此时,您将能够处理诸如
telecom.system
telecom.value
telecom.use等属性。

谢谢您的回答。您能详细说明一下我们如何利用对数组的查询吗?我们目前正在使用DocumentDB和MongoDB支持,所以我们希望有mongoose/MongoDB的方法来实现这一点
"telecom": [
  {
    "system": "phone",
    "value": "2019196553",
    "use": "home"
  }
]
"telecom": {
    "system": "phone",
    "value": "2019196553",
    "use": "home"
  }