Mám MongoDB dokumenty strukturována tímto způsobem:
[
{
"id": "car_1",
"arrayProperty": [
{
"model": "sedan",
"turbo": "nil"
},
{
"model": "sedan",
"turbo": "60cc"
}
]
},
{
"id": "car_2",
"arrayProperty": [
{
"model": "coupe",
"turbo": "50cc"
},
{
"model": "coupe",
"turbo": "60cc"
}
]
}
]
Chci být schopen, aby se najít dotaz, který se promítá do základní angličtiny jako "Ignoruje všechny modely, které mají "žádné" hodnotu "turbo", vrátit všechny dokumenty s arrayProperty délky X." To znamená, "arrayProperty" auto 1 by být interpretován jako velikost 1, zatímco pole auto 2 bude mít velikost 2. Cílem je být schopen provést dotaz pro všechny vozy s arrayProperty velikost 2 a jen vidět auta 2 se vrátil ve výsledcích.
Bez ohledu na nulové hodnoty, dotaz je velmi jednoduchý:
{ arrayProperty: { $size: 2} }
A to by se vrátit oba vozy 1. a 2. Navíc, pokud naše pole bylo jen jednoduché pole jako:
[1,2,3,'nil]
Pak náš dotaz je jednoduše:
{
arrayProperty: {
$size: X,
$ne: "nil"
}
}
Nicméně, když jsme se představit pole JSON objektů, se věci složitější. Snažil jsem se mnoho věcí bezvýsledně, včetně:
"arrayProperty": {
$size: 2,
$ne: {"turbo": "nil"}
}
"arrayProperty": {
$size: 2,
$ne: ["arrayProperty.turbo": "nil"]
}
I bez $size
provozovatel tam, nemůžu filtrovat podle hodnoty nil. Ví někdo, jak bych správně dělat to v ty poslední dva dotazy?