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