I have a document that consists of the following documents:
{ "f" : [ [ 1, 2, 3], [4, 5, 6] ] }
{ "f" : [ [ 2, 1, 3], [4, 5, 6] ] }
{ "f" : [ [ 1, 2, 4], [4, 5, 6] ] }
In this collection, I want to match documents that have an array containing 1, 2, and 3 in one of the arrays of the "f" field.
What I have tried so far:
db.mytest.find({ f: { $elemMatch: { $all: [1,2,3] } } } )
I expect this request to work, but I do not understand why this is not so. I do not agree with the documents.
db.mytest.find({ f: { $elemMatch: { $elemMatch: { $all: [1,2,3] } } } })
This also does not work.
db.mytest.find({ f: { $all: [[1,2,3]] } })
This works, but the elements must be in the exact order. I want to be able to match when the input array is 2, 1, 3. One of the possible solutions is to always store the elements in ascending order and use this query.
db.mytest.find({ f: { $elemMatch: { $elemMatch: { $in: [1, 2, 3] } } } })
This works, but it matches all documents containing any of 1, 2, or 3. I only need documents that contain exactly 1, 2, and 3 in one array.
, ?