我已經遵循這種形式的文檔:發現,在子文件數組的數組有價票證
{
created_by: 'user1',
created_on: '2014-10-1022: 32: 12.000',
submitted: true,
submitted_on: '2014-10-1022: 32: 12.000',
submitted_by: user2,
approved: true,
approved_by: 'adminUser2',
approved_on: '2014-10-1022: 32: 12.000',
form_title: 'FormTitle1',
form_id: 12,
header_responses: [
{
header_field_id: 1, sequence: 1,
responses: [
{
submitted_by: 'user1', submitted_on: '2014-10-1022: 32: 12.000',
values: ['xxx' ]
}
]
]
},
{
header_field_id: 2,
sequence: 2,
responses: [
{
submitted_by: 'user1', submitted_on: '2014-10-1022: 32: 12.000',
values: ['yyy', 'zzz']
},
{
submitted_by: 'user2', submitted_on: '2014-10-1022: 32: 12.000',
values: ['aaa','bbb']
}
]
}
]
}
所以,FormResponse
■找和header_responses
數組,實習生有一個數組responses
,然後有一個values
陣列。這是爲了讓系統維護歷史記錄,所以當我顯示一個FormResponse
時,我只顯示最後一組response
``values`,但我仍然記錄了保存的內容。
現在我需要實現一個過濾系統,但我不知道如何。我需要做的是返回所有具有header_field_id
的FormResponse
s等於某個ID,並具有包含某些內容的最後一個響應值。我發現this posting,但它只處理一個級別的數組,我不知道如何處理它以處理兩個級別。我嘗試了一些東西,但它們都是荒謬和牽強的,所以我不會分享它們,因爲它們註定要失敗。
更新
期望的迴應:我想能夠搜索到的文件,其中頭部是一些_id和最後response
有一定的價值。例如,FormResponse文檔的標題ID是2,該標題的最後一個響應是'xyz'。這不應該與任何具有「xyz」作爲歷史價值的匹配。
更新2
我thinkI有它接近這一點:
FormResponses.find({
header_responses: {
$elemMatch: {
header_field_id: "BZ6NzfgxK4r38274d",
responses: {
$elemMatch: {
values: "9999"
}
}
}
}
}).fetch();
但這匹配其中任何一個值,爲 「9999」,而不是最後一個。
什麼是所期望的輸出? – styvane 2014-12-13 20:38:03
我添加了更多細節。這裏的關鍵是我只想匹配響應數組中的LAST子文檔。 – CodeChimp 2014-12-14 12:04:05