Way my doc looks like (Sample) -
Blockquote {
“_class”: “com.ibm.maas360.cloud.notif.services.model.DeviceMailBoxDocument”,
“billingId”: “12345”,
“mailboxes”: [
{
“mailboxId”: “mailbox1”,
“notifFailedAttemptCount”: 0,
“notifTime”: 1547128809771,
“pendingNotifCount”: 1,
“subscriptionId”: “id1”,
“subscriptionTime”: 1547127901328
}
]
}
What I tried -
- UNNEST - doesnot give appropriate result (maybe I was implementing it in wrong way)
- ANY - in this if any of the array objects satisfies the condition, it will take whole array in result
- EVERY - in this if even a single object did not satisfy, it will skip the whole doc
Assuming, I have around 100’s or 1k’s of doc as above. I want my query should result all the doc which has array object(s) satisfy some condition subject to if array is empty it should ignored…
Condition - All the docs with mailbox pendingNotifCount > 0
Stored documents in DB -
Blockquote ##doc-1
{
“_class”: “com.ibm.maas360.cloud.notif.services.model.DeviceMailBoxDocument”,
“billingId”: “12345”,
“mailboxes”: [
{
“mailboxId”: “mailbox1”,
“notifFailedAttemptCount”: 0,
“notifTime”: 1547128809771,
“pendingNotifCount”: 4,
“subscriptionId”: “id1”,
“subscriptionTime”: 1547127901328
},
{
“mailboxId”: “mailbox2”,
“notifFailedAttemptCount”: 0,
“notifTime”: 1547128809779,
“pendingNotifCount”: 0,
“subscriptionId”: “id2”,
“subscriptionTime”: 1547127901328
}
]
}
##doc-2
{
“_class”: “com.ibm.maas360.cloud.notif.services.model.DeviceMailBoxDocument”,
“billingId”: “12345”,
“mailboxes”: [
{
“mailboxId”: “mailbox11”,
“notifFailedAttemptCount”: 0,
“notifTime”: 1547128809771,
“pendingNotifCount”: 1,
“subscriptionId”: “id11”,
“subscriptionTime”: 1547127901328
}
]
}
##doc-3
{
“_class”: “com.ibm.maas360.cloud.notif.services.model.DeviceMailBoxDocument”,
“billingId”: “12345”,
“mailboxes”: [
{
“mailboxId”: “mailbox21”,
“notifFailedAttemptCount”: 0,
“notifTime”: null,
“pendingNotifCount”: 0,
“subscriptionId”: “id21”,
“subscriptionTime”: 1547127901328
},
{
“mailboxId”: “mailbox12”,
“notifFailedAttemptCount”: 0,
“notifTime”: null,
“pendingNotifCount”: 0,
“subscriptionId”: “id2”,
“subscriptionTime”: 1547127901328
}
]
}
Expected Result -
Blockquote [
{
“_class”: “com.ibm.maas360.cloud.notif.services.model.DeviceMailBoxDocument”,
“billingId”: “12345”,
“mailboxes”: [
{
“mailboxId”: “mailbox1”,
“notifFailedAttemptCount”: 0,
“notifTime”: 1547128809771,
“pendingNotifCount”: 4,
“subscriptionId”: “id1”,
“subscriptionTime”: 1547127901328
}
]
},
{
“_class”: “com.ibm.maas360.cloud.notif.services.model.DeviceMailBoxDocument”,
“billingId”: “12345”,
“mailboxes”: [
{
“mailboxId”: “mailbox11”,
“notifFailedAttemptCount”: 0,
“notifTime”: 1547128809771,
“pendingNotifCount”: 1,
“subscriptionId”: “id11”,
“subscriptionTime”: 1547127901328
}
]
}
]