В соответствии с mongodb doc, синтаксис для $ elemMatch будет,
t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } )
Я пытался, и он отлично работает.
Вышеуказанное означает, что он может найти, существует ли объект {a: 1, b: 'больше чем 1'} в массиве x.
У меня есть требование, где мне нужно выяснить, существуют ли все объекты в массиве в базе данных или нет.
например, допустим, у меня есть массив,
a=[{a:1, b:2},{a:3, b:4}, {a:5, b:6}]
и мне нужно выяснить, содержит ли x все из них.
t.find ({x: {$ elemMatch: {a: {$ all: [1]}, b: {$ all: [2]}}}}), и он находит все x, содержащие {a: 1, б: 2}
Но если я попытаюсь, t.find( { x : { $elemMatch : { a : {$all:[1,3]}, b : {$all:[2,4]} } } } )
, это не получится. Я знаю, что это не правильно.
Есть ли способ, которым я могу достичь этого?
Идеалт, должно быть,
t.find( { x : { $elemMatch : {$all:[ {a:1, b:2}, {a:3, b:4}] } } )
Я пытался, это не работает.