Tenho a seguinte coleção:
[
{
"_id": 1,
"favorite": {
"color": "red",
"foods": {
"fruits": "banana",
"fastfood": [
"burger",
"sandwich"
]
}
}
},
{
"_id": 2,
"favorite": {
"color": "green",
"foods": {
"noodles": "ramen",
"fastfood": [
"fries",
"burger",
"corn dog"
]
}
}
},
{
"_id": 3,
"favorite": {
"color": "red",
"foods": {
"soup": "cream soup"
}
}
}
]
E eu tenho a seguinte consulta:
db.collection.find({
"favorite.foods.fruits": "banana",
"favorite.foods.fastfood": {
"$all": [
"burger"
]
}
})
Resultado atual:
[
{
"_id": 1,
"favorite": {
"color": "red",
"foods": {
"fastfood": [
"burger",
"sandwich"
],
"fruits": "banana"
}
}
}
]
Resultado Esperado: Mas este não é o resultado esperado. Preciso corresponder ao objeto favorite.foods.fastfood completo para a matriz de fastfood. Se o fastfood NÃO for idêntico à minha consulta, a consulta deve retornar nulo/falso/vazio.
Além disso, o resultado da consulta com mongoTemplate também é bom para mim.
Basta usar
$setEquals
para realizar a comparação de array.parque infantil mongo
Se a ordem for importante para fins de identidade, basta remover o
$all
operador:Demonstração de playground