in MongoDB, I have many documents in 2-level array as below:
{
_id:1,
"toPerson": [
        [
            {
                "userid": "test1"
            },
            {
                "userid": "test2"
            }
        ],
        [
            {
                "userid": "test10"
            },
            {
                "userid": "test11"
            }
        ]
  ]
}
.....
{
_id:99,
"toPerson": [
        [
            {
                "userid": "test2"
            },
            {
                "userid": "test3"
            }
        ],
        [
            {
                "userid": "test100"
            },
            {
                "userid": "test101"
            }
        ]
  ]
}
Question is how to query all documents that have userid say test2 ?
Have tried:
col.find({'toPerson.userid':'test2'})
it's return nothing. also I have tried using aggregate but found maybe it's not the right direction. 
Anyone can help with this?
UPDATE 1 Just read this post
Retrieve only the queried element in an object array in MongoDB collection
but it's different
- Structure different: is {field:[ [{ }], [{ }], .... ]}, not{ field:[ {}, {} ] }
- I want to keep all returned documents structure untouched, $unwind(make toPerson to be 1-level array) or $$PRUNE(remove some fields) will change the structure returned.
UPDATE 2
What I want is to get following result in ONE statement:
col.find({ 'toPerson.0.userid':'test2' }) 
+ col.find({ 'toPerson.1.userid':'test2' }) 
+ ... ...
Is there any precise counterpart statement of above results combined together ?
 
     
    