我正在使用通过POST请求传递的mongoDB查询来返回数据子集:
body: any = {"services.history": { "$elemMatch": { "status": "orientation", "enrolled" : true } }};
这是按预期工作的。但是,我们会将我们的实施更改为定位状态,并检查它是"历史记录中的第一个项目"阵列。如何通过修改上述查询来实现这一目标?
我认为这可能有效,但没有去:
body: any = {"services.history[0]": { "$elemMatch": { "status": "orientation", "enrolled" : true } }};
我也试过点符号,但仍然没有去:
body: any = {"services.history.0": { "$elemMatch": { "status": "orientation", "enrolled" : true } }};
如何在POST请求中使用此类查询仅定位数组中的第一项?换句话说,如果elemMatch匹配并且它是"历史"中的第一项,我只希望它返回true。阵列。我只需要对history
数组上的第一个对象运行此检查,因为我知道它将是后端数组中最新的(最相关的)数据对象。
我查询的数据如下所示:
"history": [
{
"status": "oritentation",
"endDate": "2012-09-26T06:00:00.000Z",
"startDate": "2011-03-26T06:00:00.000Z",
"_id": "1259c4d250502sa434788",
"enrolled": true,
}
]
答案 0 :(得分:2)
如果阵列的子文档中没有其他字段,则可以执行以下操作:
body: any = {"services.history.0": { "status": "orientation", "enrolled" : true } }
如果您有其他字段,则可以执行此操作:
body: any = { "services.history.0.status": "orientation", "services.history.0.enrolled": true }